在Fragment中使用StartActivityForResult,RequestCode错乱的问题

 

问题:在Fragment中使用startActivityForResult(intent, 1);然后在Activity中的onActivityResult(int requestCode, int resultCode, Intent data)方法中取到 requestCode并不是1,而在Fragment中的onActivityResult方法却能获得正确的requestCode

解决:

通过搜索stackoverflow获得答案:

You are calling startActivityForResult() from your Fragment. When you do this, the requestCode is changed by the Activity that owns the Fragment.
If you want to get the correct requestCode in your activity try this:

Change:
startActivityForResult(intent, 1);
To:
getActivity().startActivityForResult(intent, 1);


来源:

http://www.jianshu.com/p/f5da613f24f5

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fragment 使用 `onActivityResult()` 方法时,需要注意以下几点: 1. 必须在 Fragment 所依赖的 Activity 调用 `startActivityForResult()` 方法启动新的 Activity,否则 `onActivityResult()` 方法将不会被调用。 2. 在 Fragment 使用 `startActivityForResult()` 方法启动新的 Activity 时,需要使用 Fragment 的 `startActivityForResult()` 方法来启动新的 Activity。 3. 确保在 Fragment 调用了 `setUserVisibleHint()` 方法,并将其设置为 true,以确保 Fragment 可见并且可以接收 onActivityResult() 回调。 4. 确保 requestCode 是在 Fragment 唯一的,避免与 Activity 或其他 Fragment requestCode 冲突。 如果以上步骤都正确,但是 `onActivityResult()` 方法仍然没有被执行,可以尝试在 Fragment 重写 `onActivityResult()` 方法,并在方法调用 `super.onActivityResult()` 方法。例如: ``` @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); // your code } ``` 如果还是没有解决问题,可以尝试在 Activity 的 `onActivityResult()` 方法调用 `super.onActivityResult()` 方法,以确保 Fragment 的 `onActivityResult()` 方法被正确调用。例如: ``` @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); // your code } ``` 希望能帮助到你解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值