您的位置:首页 > 其它

关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案

2015-11-05 16:34 295 查看

关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案.

一、继承Fragment,在其内部维护一个栈

重载Fragment的startActivityForResult(),和onActivityResult()方法,具体实现参考以下代码。


private static Stack<BaseFragment> fragmentStack = new Stack<>();

@Override
public void startActivityForResult(Intent intent, int requestCode) {
Fragment parentFragment = getParentFragment();
if (null != parentFragment) {
fragmentStack.push(this);
parentFragment.startActivityForResult(intent, requestCode);
} else {
super.startActivityForResult(intent, requestCode);
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
BaseFragment fragment = fragmentStack.isEmpty() ? null : fragmentStack.pop();
if (null != fragment) {
fragment.onActivityResult(requestCode, resultCode, data);
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: