Activity之间的数据传输

方法一

创建intent后使用putExtra

intent.putExtra();//使用时尽量提取字符串放入键值对

方法二

使用Bundle(类似HashMap)

Bundle bundle=new Bundle();

bundle.putString(BUTTON_TITLE,getString(R.string.imooc)); intent.putExtra(BUTTON_TITLE,bundle);

startActivity(intent);

创建bundle然后使用put***方法放入键值对

使用时
if ( getIntent()!=null){

Bundle bundle=getIntent().getBundleExtra(MainActivity.BUTTON_TITLE);

if (bundle!=null) textView2.setText(bundle.get***(MainActivity.BUTTON_TITLE)); }

方法三

intent.putExtra

序列化

自定义一个类并实现Serializable,并且它的内部类也要实现序列化,优点方便不用实现方法但是对内存不友好

自定义一个类并实现Parcelable,并且它的内部类也要实现序列化,优点对内存友好但是不方便

B回到A

setResult();

如果是点击按钮结束当前页面返回则在其监听事件中加setResult();

1参RESULT_OK等表明关闭了通知前面的这种情况下打开B页面时就不能用

startActivity(intent)了用的是startAcitivityForResult(intent,Int);若有三变量加个bundle

----(此方法已过时官方给出的替代方案是registerForActivityResulthttps://developer.android.google.cn/training/basics/intents/result#kotlin)----

Int表示请求的结果(相当于给打开的页面一个编号,以便本页面能打开多个页面时知道刚才关闭的是哪个)A向B请求后B的setResult(RESULT_OK);表示ok还可以有第二个变量为Intent 可以使用intent.putExtra来添加数据

B中的返回 监听事件

findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent=new Intent();
        intent.putExtra("mooc","中国大学mooc");
        setResult(RESULT_OK,intent);
        finish();
    }
});

在A  Activity重写  onActivityResult

@Override                                                                                                               //就是上文中的Int                 //B传回来的intent
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //  表示刚才打开的是那个页面什么时候返回的
    if (resultCode==RESULT_OK&&requestCode==999){
       setTitle(data.getStringExtra("mooc" ));    
        }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值