天天看点

Fragment的startActivityForResult方法Fragment的startActivityForResult方法

Fragment的startActivityForResult方法

本文讨论Fragment的startActivityForResult方法:

  • Fragment的startActivityForResult方法与Activity的区别
  • Fragment调用startActivityForResult遇到的问题

startActivityForResult

该方法可以开启一个新的Activity A,但是A的模式不能是singleTask

该方法可以获取Activity返回的结果,并在onActivityResult中进行处理

Fragment的Activity如果不被调用,有可能是外层的activity也实现了onActivityResult方法,但是忘记调用super.onAcitivityResult方法。

如果Fragment和Activity都调用,则会出问题

如果只在Activity中实现onActivityResult,然后调用activity的startActivityForResult,即使调用了super.startActivityForResult,也没有用,需要通过fragmentManager和layout找到相应的Fragment,主动调用Fragment的onActivityResult。

Fragment调用startActivityForResult遇到的问题

我在Fragment中调用startActivityForResult开启一个二次验证页面时,等二次页面处理完成返回Fragment时,当前Fragment所在的Activity被destory掉了。我并没有主动的调用Activity的finish方法。该错误在华为荣耀上复现频率很高,在另一台三星galaxy测试机上没出现过。想问问你有什么想法,会不会是因为内存问题,导致系统回收了Activity的资源。