关于在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);
}