startActivityForResult理解笔记

今天进一步理解了startActivityForResult(Intent intent, int requestCode);onActivityResult(int requestCode, int resultCode, Intent data);和setResult(int resultCode, Intent data);主要2点,怎么用和调用谁的。

1.一个activity调用startActivityForResult ,进入一个新的activity界面,然后新的activity销毁了,原activity的onActivityResult被调用,其中requestCode为开始调用startActivityForResult设置的requestCode,第二个和第三个参数为新activity在调用finish方法之前调用setResult方法设置的(注意此处一定要在finish之前setResult)。

2.fragment和activity到底谁调用onActivityResult方法:这个要看是谁的context启动的startActivityForResult方法,举例说假如是fragment想让父亲activity的onActivityResult被调用可以使用this.getActivity().startActivityForResult(Intent intent, int requestCode);

有时候跨activity传递数据还是有点麻烦,比如abc3个页面,a到b到c,c启动b就销毁,c销毁,a并不会调用onActivityResult,所有有时候还是写dialog吧,典型的场合是activity 和dialog同时显示 要先dialog.dismiss() 后activity.finish() 如果直接finish() 会出错 但不影响功能。还有就是使用Activity加Fragment的模式,推荐使用Fragmentation。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值