基于Intent实现Activity与Activity之间的数据传递,实现二个Activity的跳转功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Intent实现Activity与Activity之间的数据传递,实现二个Activity的跳转功能相关的知识,希望对你有一定的参考价值。

在讲参数传递之前,先讲下intent的定义:

    Intent intent = new Intent(MainActivity.this,SecondActivity.class);  //这是显式定义

如果是隐式定义,隐式Intent通过在androidManifest.xml中<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和category。

<activity android:name=".SecondActivity" >

  <intent-filter>

        <action android:name="com.example.activitytest.ACTION_START" />

         <category android:name="android.intent.category.DEFAULT" />  

         <category android:name="com.example.activitytest.MY_CATEGORY"/>

   </intent-filter>

 </activity>

 

1、静态变量传递数据:

变量定义时一定要设置成public static,在第二个将打开的Activity进行定义,在第一个Activity对即将打开的Activity的静态变量进行赋值。

(1)public class FirstActivity extends Activity {

SecondActivity.ddd = 100;//设置静态变量传递的参数

(2)public class SecondActivity extends Activity{

public static int ddd;这里定义

textview.setText("静态变量:"+ddd);这里获取第一个Activity传过来的ddd参数

2、通过putExtra传递数据:

        putExtra(key,value);//携带参数发送到另一个页面

        String name = intent.getStringExtra(key);//获取传送过来的字符串

下面是发送参数代码:

Intent intent = new Intent(MainActivity.this, ShowActivity.class);//实例化一个inent                    

intent.putExtra("name", "大家好");//为putExtra添加需要传递的参数

startActivity(intent);

下面是获取代码:

Intent intent = getIntent();//获取一个intent对象

String name = intent.getStringExtra("name");//获取传递过来的值

textview.setText("putExtra传参:"+name);

3、全局变量传递数据

创建一个类继承Application在设置变量,并设置get方法获取变量的值

在AndroidManifest.xml的application里面添加android:name=".Defind" //Defind为类名

defind = (Defind) getApplication();//在使用的类里面通过getApplication获取全局变量类的对象

这个方式支持开发者自己定义一个类来进行传参,但是该类需要在AndroidManifest.xml中声明出来,

在AndroidManifest.xml的application里面添加android:name并给name赋值为类名,然后在类里面通过

getApplication获取全局变量类的对象,再对该对象进行操作。

4、数据包Bundle传递数据

下面是参数发送代码:

Bundle b = new Bundle();//创建Bundle对象

  b.putString(‘name‘,‘姓名‘);//往Bundle对象添加传递的参数

  b.putInt(‘age‘,1);//往Bundle对象添加传递的参数

  intent.putExtras(b);在intent里面添加Bundle对象

下面是获取参数代码:

  Bundle data = intent.getExtras();//获取传递过来的Bundle对象

  data.getString(‘name‘);//通过Bundle对象的key获取值

  data.getInt(‘age‘);////通过Bundle对象的key获取值

以上是关于基于Intent实现Activity与Activity之间的数据传递,实现二个Activity的跳转功能的主要内容,如果未能解决你的问题,请参考以下文章

详解intent和intentfilter

Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同

Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同

Android基础Activity启动模式以及Intent Flags 与 栈 的全面解析

aar依赖 与 intent aar中的activity

Activity.finishAffinity() 与 Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK