1. onActivityResult是比onResume先调用的,而且如果onActivityResult中的code比较耗时的话,会阻塞onResume,可以通过如下的code进行测试:
public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
打印的次序应该是
MainActivity: on activity result start to deal with: 13
MainActivity: on activity result end
MainActivity: on resume start
refer onActivityResult() & onResume()
2. 在activity和fragment并存的时候startActivityForResult
如果在host activity中重写了onActivityResult,那么应该调用super.onActivityResult,这样才能保证fragment中的onActivityResult会被调用
通过如下片段测试:
host activity中有一个fragment,fragment通过两种方式startActivityForResult
1)
Intent intent = new Intent(getContext(), SecondActivity.class); startActivityForResult(intent, 12);
2)
Intent intent = new Intent(getContext(), SecondActivity.class); getActivity().startActivityForResult(intent, 13);
注意两者之间的区别,第二个显示调用了getActivity
并且在fragment中设置onActivityResult
public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
在host activity中
public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.w(TAG, "on activity result start to deal with: " + requestCode); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.w(TAG, "on activity result end"); } public void onResume() { super.onResume(); Log.w(TAG, "on resume start"); }
结果,如果通过方式1 startActivityForResult,会发现fragment中的onActivityResult先被调用,然后到host activity中的onActivityResult,但是host activity中获取的requestCode是一个随机值:
FirstFragment: on activity result start to deal with: 12
FirstFragment: on activity result end
MainActivity: on activity result start to deal with: 196620
MainActivity: on activity result end
MainActivity: on resume start
FirstFragment: on resume start
如果是方式2,fragment中的onActivityResult不会被调用,host activity中获取到的requestCode是准确的:
MainActivity: on activity result start to deal with: 13
MainActivity: on activity result end
MainActivity: on resume start
FirstFragment: on resume start
refer onActivityResult not being called in Fragment
这样的问题也需要在androidannotations中引起注意,
ProcessActivity_.intent(this).startForResult(12)
这边intent中用this,还是getActivity(),onActivityResult的响应是不一样的
相关推荐
ActivityGroup里面装的子Activity不能使用OnActivityResult()方法 的解决办法
简单的演示了 onActivityResult 的用法,提供给新手开发人员 希望能有所帮助
主要介绍了Android onActivityResult和setResult方法详解及使用的相关资料,这里提供实例,帮助大家学习理解,需要的朋友可以参考下
用注解方式处理各种OnActivityResult.zip,Android的OnActivityResult注释编译器
共享这份Android中onActivityResult的用法给大家,希望对大家有帮助。
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
当我们调用startActivityForResult()方法来跳转页面的时候需要重写onActivityResult方法,不然就和startActivity没什么两样,这个demo就是简单说明调用时间。流程如下:MainActivity::onCreate MainActivity::...
避免 onActivityResult 和 onRequestPermissionsResult 烦恼requestCode的问题,帮助快速开发
NULL 博文链接:https://lufengdie.iteye.com/blog/891802
告别onActivityResult ,用代理实现获取startActivityForResult结果以及权限检查管理的工具类
adapter中使用startActivityForesult,在Activity 用 onActivityResult接受返回数据 。demo中用的是recycleview的adapter 。
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
onActivityResult:onActivityResult方法的工作
详细测试生命周期的流程、通过demo反应launchMode的作用,onActivityResult方法的使用。
fragment 通过startActivityForResult方法启动另一个activity,返回时,不调用onActivityResult方法, 解决步骤: 1. 在Fragment所属的Activity中,重写了onActivityResult方法,确保加上super.onActivityResult ...
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
主要介绍了Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法,需要的朋友可以参考下
主要给大家介绍了关于Android巧用Fragment解耦onActivityResult的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧