如果子Activity中startActivityForResult()调用其他Activity时候遭遇到onActivityResult方法不响应
解决四步法:
a.通过父Activity启动其他Activity;
b.实现父Activity的onActivityResult方法,将该处接收到的请求转发给当前活动的子Activity;
c.自定义一个转发接口用来实现第2步中的转发功能;
d.子Activity中实现第3步接口中的方法用来接收返回信息;
代码:
a.通过父Activity启动其他Activity
getParent().startActivityForResult(new Intent(...), REQUEST_CODE);
b.实现父Activity的onActivityResult方法,将该处接收到的请求转发给当前活动的子Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//获取当前活动的Activity实例
Activity subActivity = this.getLocalActivityManager().getCurrentActivity();
//判断是否实现返回值接口
if (subActivity instanceof OnTabActivityResultListener) {
//获取返回值实例接口
OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity;
//转发请求到子Activity
listener.onTabActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
c.自定义一个转发接口用来实现第2步中的转发功能
public interface OnTabActivityResultListener {
public void onTabActivityResult(int requestCode, int resultCode, Intent data);
}
d.子Activity中实现第3步接口中的方法用来接收返回信息
@Override
public void onTabActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
//实现该处逻辑
}
}
e.子Activity一定要实现implements OnTabActivityResultListener ,重写onTabActivityResult()
public void onTabActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case SUB_REQUEST_CODE:
//Sub_History_visit();
break;
default:
break;
}
}
}
如果父Activity的onActivityResult()方法中 getLocalActivityManager().getCurrentActivity()==null,检查父Activity 中是否有对LocalActivityManager 进行操作,有的话,删除或者注释。
如有问题请加Q:1255376541
学习累了,休息一下吧!关注微信公众号“休闲1刻”,或扫描下方二维码,休闲段子等着你哦~
休闲1刻