在fragment中和在adapter中startActivityForResult

我的项目结构是一个activity中包含两个fragment,每个fragment中有button去开启新活动,也有recycleview里的button去开启。

 

实现了以后发现fragmen中的button开启的回调在fragment中的onActivityResult中接收,recycleview的在activity中接收的。让我很奇怪。

 

 

那么来比较一下集中开启的方式:

 

首先,在adpter中是无法直接startactivity的,因为需要一个上下文

 

那么,获取这个context

要么①在初始化adapter时候我们把activity传过来

要么②在初始化adapter时候我们把fragment传过来

要么③在onCreateViewHolder的时候把用viewGroup的getContext获取上下文,获取到的实际是那个activity。

 

如果是存储的为Context类,再强转成Activity类就可以调用startActivityForResult了。

 

那么问题来了,onActivityResult在哪回调?

这要看你调用的那个context是个啥,①③获得的都是activity,②如果传的是fragment实例,不是context的话,是在fragment里面回调的。

 

并且,fragment中调用的startActivityForResult是Fragment类中的,和Activity类中的不是同一处方法,上下文也不同,自然就会在两个地方回调了。

 

所以,建议传实例,就不传context了,传了还要再转,根据需求选择传哪种,传谁,能精确找到回调位置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值