Activity与Activity之间的通信

一、使用Intent

    在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容。

只是打开另一个Activity,不传递数据:               

  
  
//新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类
startActivity(new Intent(MainActivity.this, OtherActivity.class));

  携带内容,也就是传递数据有两种情况:
1)把数据传递给新的Activity:
-- 传递数据的Activity中:
     
     
Intent intent=new Intent(MainActivity.this, OtherActivity.class);
//Bundle类用作携带数据
Bundle bundle=new Bundle();
bundle.putString("name", "zhangsan");
bundle.putInt("age", 18);
//附带数据
intent.putExtras(bundle);
//打开另一个Activity,此时把Intent传递过去
startActivity(intent);
-- 接收数据的Activity中:
     
     
//在被打开的Activity中接收前面Activity传递过来的参数
Bundle bundle=this.getIntent().getExtras();
String name=bundle.getString("name");
Integer age=bundle.getInt("age");
这样就完成了一次Activity之间的通信。

2)打开一个Activity并且在新Activity调用finish方法的时候将数据传回旧的Activity中
-- 用startActivityForResoult方法打开一个新的Activit
   
   
//新建一个显式意图,第一个参数为intent对象,第二个参数为请求码用来在回调函数中区分是哪个Activity回调的
startActivityForResult(new Intent(MainActivity.this, OtherActivity.class), 1);
    
    
//新Activity调用finish方法的时候将数据传回旧的Activity中,三个参数分别是请求码,结果码,携带数据的Intent
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case 1:
//获取保存的数据
String getData = data.getStringExtra("first");
break;
     }
}
-- 被打开的Activity中
   
   
Intent intent = new Intent();
//添加数据
intent.putExtra("first", "first");
//设置返回码和携带数据的intent
setResult(MainActivity.RESULT_OK, intent);
finish();

二、Android 提供了包括 SharedPreferences 在内的很多种数据存贮方式,比如 SQLite,文件等,程序员可以通过这些 API 实现 Activity 之间的数据交换。如果必要,我们还可以使用 IPC 方式。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值