我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Android中Intent传递对象给Activity的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Android中Intent传递对象给Activity的方法

Activity回顾

activity是android程序中最重要的组件之一,它是用户与android用户交互的主要组件,类似于桌面程序的图形界面。android程序大致可以分为看的见的组件和看不见的service。看得见的组件主要就是在Activity中定义,看不见的service,包括service,BroadCastReceiver,ContentProvider等等,这是后话。今天先来大致了解一下activity。
可以理解activity为盛放组件的容器,和用户交互的组件都要放在Activity中。Activity的生命周期:

2016421161249516.jpg (513×663)

对于activity有一定了解的对这个图一定不会陌生,这个图说明了activity所属的3个生命周期:

1.全部的生命周期:这个生命周期从onCreate()——>onDestory()结束。表明了一个activity从创建到消亡的全部过程,在onCreate()方法中做初始化的操作,在onDestory()中释放所有的资源。

2.可见的生命周期:这个生命周期是从onStart()——>onStop()结束。在这个阶段,activity处于可见的状态(包含前景状态和遮盖状态)。在这两个状态之间你可以准备一些与用户交互的数据。例如在onStart()中注册一个BroadcastReceiver并且在onStop()方法中释放这个BroadCastReceiver。

3.前景的生命周期:这个生命周期是从onResume()——>onPause()结束。在这个阶段,Activity始终处于界面的前景的状态,用户可以与activity交互。

对于这几个方法:

(1)onCreate() 当Activity被第一次调用的时候,这个方法被调用,可以在这个方法里面准备交互的数据和view。并且这个方法传递过来一个Bundle,包含了以前存储的数据。
(2)onReStart() 当activity从onStop()方法过渡到onStart()之间调用。
(3)onStart() 当activity转换成可视的状态时,这个方法被调用。
(4)onResume() 当activity转换成前景状态的时候这个方法被调用,这个时候用户可以与activity之间进行交互。
(5)onPause() 当activity转换成背景的时候,这个方法调用。应该在这个方法中存储一些还没有保存的数据,这个方法中方法体的处理必须快,只有在这个方法return之后,才会显示新的前景activity。
(6)onStop() 当activity转换成不可见的时候,这个方法调用。
(7)onDestory() 在activity消亡之前这个方法被返回。activity被消亡的原因可能是因为自身的结束也可能是因为系统回收了内存,具体是哪一种可以通过调用方法isFinishing()确认。
 
如果设备的配置信息发生了改变,activity也要发生改变,它要从它当前所处的阶段走向onDestory(),如果当前的activity所处的阶段在可视阶段或者是前景阶段,就会重新生成一个符合当前配置的activity。如果想要绕过重新生成一个activity,可以在manifest中的android:configChanges属性中设置,并且在发生相应的配置变化的时候,会调用activity的onConfigurationChanged(Configuration)方法,而不会去重新start一个activity,如果配置的变化没有事先在android:configChanges中声明,则不会调用此方法。

Intent传递对象给Activity
 通过Intent,一个activity可以很容易的启动另一个activity,并且传递相关的数据给activity,通过Intent的putEXtra()方法,可以传递boolean、int、double等基本数据类型,如果想要传递对象的话,那么该对象必须实现Serializable接口,通过intent方法的putExtra(String name,Serializable value)方法,将对象传递过去。在接收方的activity通过intent.getExtra(name)方法获得该对象。

发送消息的acitivity的layout.xml:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context=".Main" >
  <Button
    android:id="@+id/btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="next" />
</RelativeLayout>

Main.java:


package com.app.main;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
  Button btn = null;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn = (Button) this.findViewById(R.id.btn);
    btn.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View arg0) {
        Intent intent = new Intent();
        Person p = new Person();
        p.setName("wx");
        p.setGender("boy");
        p.setAge(25);
        intent.putExtra("person", p);
        intent.setClass(Main.this, NextMain.class);
        Main.this.startActivity(intent);
      }
    });
  }
}

接收方activity的layout.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <TextView
    android:id="@+id/textview1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
</LinearLayout>

接收方activity:


package com.app.main;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class NextMain extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.nextmain);
    TextView tv = (TextView) this.findViewById(R.id.textview1);
    Intent intent = this.getIntent();
    if (intent.getExtras().get("person") != null) {
      Person p = (Person) intent.getExtras().get("person");
      tv.setText("name:" + p.getName() + ",age:" + p.getAge()
          + ",gender:" + p.getGender());
    }
  }
}

效果如下:

2016421161342442.png (720×1280)

2016421161406517.png (720×1280)                      
 

您可能感兴趣的文章:android中intent传递list或者对象的方法Android系列之Intent传递对象的几种实例方法Android中Intent传递对象的3种方式详解Android 通过Intent使用Bundle传递对象详细介绍Android 使用Intent传递数据的实现思路与代码Android开发之利用Intent实现数据传递的方法Android编程使用Intent传递图片的方法详解Android Intent传递数据大小限制详解


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Android中Intent传递对象给Activity的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解Android中Intent传递对象给Activity的方法

Activity回顾activity是android程序中最重要的组件之一,它是用户与android用户交互的主要组件,类似于桌面程序的图形界面。android程序大致可以分为看的见的组件和看不见的service。看得见的组件主要就是在Ac
2022-06-06

Android中Intent传递对象的3种方式详解

前言 相信Intent的用法大家已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,当我们使用Intent在Activity 间传递信息时发现putExtra() 方法
2022-06-06

android中intent传递list或者对象的方法

本文实例讲述了android中intent传递list或者对象的方法。分享给大家供大家参考。具体实现方法如下: 方法一: 如果单纯的传递List 或者List的话 就可以直接使用 代码如下:代码如下:int
2022-06-06

Android中Intent传递对象的两种方法Serializable,Parcelable

Android中的传递有两个方法,一个是Serializable,另一个是Parcelable。 Serializable是J2SE本身就支持的。而Parcelable是Android所特有的。 二者的使用场景和区别: 1)在使用内存的时候
2022-06-06

Android开发中Intent传递对象的方法分析

本文实例分析了Android开发中Intent传递对象的方法。分享给大家供大家参考,具体如下: 方法一: 利用方法:public Intent putExtra (String name, Parcelable value)传递一个Parc
2022-06-06

Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法

Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中
2022-06-06

android intent传递对象的方式有哪些

Android中,可以使用以下方式传递对象:1. 实现Parcelable接口:对象需要实现Parcelable接口,并实现相关方法,使得对象可以被序列化和反序列化。然后通过intent.putExtra()方法将对象放入Intent中,通
2023-08-24

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializa
2022-06-06

Android编程使用Intent传递对象的方法分析

本文实例分析了Android编程使用Intent传递对象的方法。分享给大家供大家参考,具体如下: 之前的文章中,介绍过Intent的用法,比如启动活动,发送广播,启发服务等,并且可以使用Intent时传递一些数据。如下代码所示:Intent
2022-06-06

在Android中通过Intent使用Bundle传递对象的使用方法

Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法。被传递的对象需要先实现序列化,而序列化对象有两种方式:java.io.Serializable和android.os.Parcel
2022-06-06

Android系列之Intent传递对象的几种实例方法

在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者
2022-06-06

Android基于Intent实现Activity之间数据传递的方法

本文实例讲述了Android基于Intent实现Activity之间数据传递的方法。分享给大家供大家参考,具体如下: MainActivity:package com.test.intentdemo; import android.app.
2022-06-06

Android编程使用Intent传递图片的方法详解

本文实例讲述了Android编程使用Intent传递图片的方法。分享给大家供大家参考,具体如下: 基本思路是先把bitmap转化为byte数组,用Intent传递数组,在将数组转化为bitmap bitmap转化为byte数组的方法:pri
2022-06-06

Android intent之间复杂参数传递方法详解

本文详细讲述了Android intent之间复杂参数传递方法。分享给大家供大家参考,具体如下: Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,而这两种通常实现的是Java基本对象
2022-06-06

Android Activity中使用Intent实现页面跳转与参数传递的方法

本文实例讲述了Android Activity中使用Intent实现页面跳转与参数传递的方法。分享给大家供大家参考,具体如下: 新建一个FirstAvtivity.javapackage com.zhuguangwei; import an
2022-06-06

详解Android Activity之间切换传递数据的方法

前面照着android系统的裁剪图片的功能自己写了一个相似的工具。功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢?其实这个也很简单了,就是intent的基础用法。先上个图(界面依旧没优化,
2022-06-06

Android中传递对象的三种方法的实现

Android中,Activity和Fragment之间传递对象,可以通过将对象序列化并存入Bundle或者Intent中进行传递,也可以将对象转化为JSON字符串,进行传递。 序列化对象可以使用Java的Serializable的接口、P
2022-06-06

详解Android中Intent的使用方法

一、Intent的用途 Intent主要有以下几种重要用途: 1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该I
2022-06-06

bash脚本中将密码传递给ssh/scp命令方法详解

安装SSHPASS 对于大多数最新的操作系统,sshpass软件包在默认软件包存储库中可用。可以使用以下命令在系统上安装它。 在Debian上:$ sudo apt install sshpass在CentOS上:$ yum --enabl
2022-06-04

详解Android应用开发中Intent的作用及使用方法

Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录