多个Activity之间传值,使用Intent

感觉已经好久都没有写博客了,今天来更新一篇,虽然是很零碎的知识点,但也是好不容易才挤出时间来写的,仅供参考,大神就不要吐槽了,好了废话就不多说了

Activity之间传值有很多种,当然看写代码的人比较趋向于哪一种了,无论用那种方式实现的目的只有一个:多个Activity之间实现通信!下面这篇博客介绍一下多个Activity之间使用Intent传值,Intent背负着信使的荣誉称号,当然它就要履行这个荣誉称号的义务了,使用Intent传值有些注意事项,各位在使用的需要注意下。




A-B之间数据传递


 1)单向传值:A传值给B,但不需要B返回数据
A:
//传入数据给B
Intent i = new Intent(A.this,B.class);
i.putExtra("A_B","给B的数据");
startActivity(i);
B:
//拿到A传入的数据
String date= getIntent().getStringExtra("A_B");


 2)双向传值:A传值给B,并且需要B返回数据给A
A:
//传入数据给B
Intent i = new Intent(A.this,B.class);
i.putExtra("A_B","给B的数据");
startActivityForResult(i, 0x123);

//接收B返回的数据,重写onActivityResult方法
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断返回的code是否是B页面的code
if(resultCode==0x123){
//拿到B传回的数据
String date = intent.getStringExtra("B_A");
}
   }


B:
//接收A传入的数据
String date= getIntent().getStringExtra("A_B");

//返回数据给A,在末尾一定要将当前页面finish
Intent intent = new Intent();
intent.putExtra("B_A","返回给A的数据");
setResult(0x123,intent);
onBackPressed();


B-C,A-C之间的数据单向或者双向传递都跟A-B之间数据传递的方法一样,这里就不重复写了,有兴趣的同学可以把代码写一遍跑一下,下面说说C跳过B直接传递值给A怎么做。


A->B->C,C->A

在实际应用开发中有很多情况是A->B->C,然后在C中做了某些操作,需要把一些值直接跳过B直接传递给A,其实这种传值方式同样有很多种,比如发个特定的广播,循环退出已经存在的页面等等,其实方法有很多种,下面我还是以Intent传值为例
C:
 Intent i = new Intent(C.this, A.class);
 i.putExtra("C_A", "C传回给A的数据");
 //要启动的activity已经在当前的任务中,那么在该activity之上的activity都会关闭,并且intent会传递给在栈顶的activity

 //如果 Activity 已经是运行在 Task 的 top,则该 Activity 将不会再被启动
 i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
 startActivity(i);


 A:

此时需要在A中重写onNewIntent方法,在该方法中获取从C中传递的值
   @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
  //从C返回的数据
 String date = intent.getStringExtra("C_A");

    }


至于对Activity跳转中Flag理解下次有时间再做分享,以上就是今天总结的内容,这些都是常用的知识,除此之外还有很多等着我们去探索,继续努力!

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值