startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应。
startActivityForResult无法接收返回值的解决方案。
原因可能有
# 不是单独的Activity而是一个子Activity,比如TabHost,ActivityGroup等
# 不能是singleTask
解决方案
# 根据需要去掉singleTask
#subActivity的解决方法如下文。
----摘----:
在TabHost的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题.
解决办法如下:
1.通过父Activity启动其他Activity;
2.实现父Activity的onActivityResult方法,将该处接收到的请求转发给当前活动的子Activity;
3.自定义一个转发接口用来实现第2步中的转发功能;
4.子Activity中实现第3步接口中的方法用来接收返回信息;
代码如下:
1.通过父Activity启动其他Activity
代码如下:
1.通过父Activity启动其他Activity
1 getParent().startActivityForResult(new Intent(...), REQUEST_CODE);
2.实现父Activity的onActivityResult方法
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 // 获取当前活动的Activity实例 4 Activity subActivity = getLocalActivityManager().getCurrentActivity(); 5 //判断是否实现返回值接口 6 if (subActivity instanceof OnTabActivityResultListener) { 7 //获取返回值接口实例 8 OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity; 9 //转发请求到子Activity10 listener.onTabActivityResult(requestCode, resultCode, data); 11 } 12 super.onActivityResult(requestCode, resultCode, data); 13 }
3.自定义接口
/** * 解决子Activity无法接收Activity回调的问题 * @author Administrator * */ public interface OnTabActivityResultListener { public void onTabActivityResult(int requestCode, int resultCode, Intent data); }
4.子Activity需要实现onTabActivityResult方法
@Override public void onTabActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { //实现该处逻辑
... } }
转载:http://blog.csdn.net/simayilong/article/details/7596430
其他问题:
#getLocalActivityManager没有此方法
getLocalActivityManager涉及LocalActivityManager,而这个类已经被deprecated了,参考这里官方文档。
This class was deprecated in API level 13.
Use the new Fragment
and FragmentManager
APIs instead; these are also available on older platforms through the Android compatibility package.
#
+
+
+
=
=
=
相关推荐
startActivityForResult过时.md
使用startActivityForResult回传数据
介绍了StartActivityForResult的运用,并总结了一些问题及答案,可供初学者参考,代码无误,放心运行!
startActivityForResult
很多时间我们需要的不仅只是startActivity或是finish,而是在finish的时候,把在第二个界面的值回传给第一个界面。这个程序就是用来解决这样的问题的。
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
Android之Intent通过startActivityForResult方法启动新Activity
一种 startActivityForResult 更简单流程
关于startActivity被大家忽略的 Fragment中的startActivityForResult方法
startActivityForResult获得通讯录中电话信息
定义了4个Activity,主activity跳转到其他2个时附带String good,第二个在接收到数据后将String +"boy"后返回给主Activity并Toast;第三个在接收到数据后将String +"boy&girl"后返回给主Activity并Toast。第4个采用...
startActivityForResult使用方式,代码比较简单
这里实现的效果是,点击a Activity后,屏幕会跳转到手机的通讯录,任意选择点击一个通讯录中的联系人,则从通讯录Activity跳回到a Activity并在a Activity上显示你刚才选择通讯录联系人的名字。
使用StartActivityForResult进行Activity跳转传值的小例子
NULL 博文链接:https://duduli.iteye.com/blog/1422558
NULL 博文链接:https://zhanglimijavaeye.iteye.com/blog/965433
基于RxPermissions框架思想,在使用startActivityForResult可以不重写onActivityResult回调
startActivityForResult
NULL 博文链接:https://676744379-qq-com.iteye.com/blog/1122436