基于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的跳转功能的主要内容,如果未能解决你的问题,请参考以下文章
Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同
Android 系统源码初步阅读之 activity 的 startActivity(intent) 与 非 activity 的 startActivity(...) 的不同
Android基础Activity启动模式以及Intent Flags 与 栈 的全面解析
Activity.finishAffinity() 与 Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK