我有问题onActivityResult()没有被传递给片段,我认为主要活动有问题将onActivityResult()传递给片段,我得到了这个警告,“活动结果片段索引超出范围”和这个原因,我无法重新加载我的嵌套片段。
我的应用程序使用导航抽屉,我在一个片段中查看寻呼机作为菜单之一,因此视图寻呼机重新加载嵌套片段,我想重新加载视图寻呼机,以便视图寻呼机内的片段获取最新更新。我从viewpager
中的片段调用startActivityForResult Intent i = new Intent(getActivity(), AddEditRecurring.class);
i.putExtra("isEditMode", true);
i.putExtra("itemID", itemID);
i.putExtra("name", name);
i.putExtra("type", type);
i.putExtra("catId", categoryID);
i.putExtra("repeat", startOn);
i.putExtra("price", String.valueOf(amount));
startActivityForResult(i, 1);
并调用AddEditRecurring活动,在用户完成此活动后,活动将关闭并发送活动结果以重新加载viewpager。但在这种情况下,活动无法将onActivityResult传递给片段,我无法重新加载视图寻呼机。
编辑:
我浏览了android支持库并得到了这个,
/**
* Dispatch incoming result to the correct fragment.
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mFragments.noteStateNotSaved();
int index = requestCode>>16;
if (index != 0) {
index--;
if (mFragments.mActive == null || index < 0 || index >= mFragments.mActive.size()) {
Log.w(TAG, "Activity result fragment index out of range: 0x"
+ Integer.toHexString(requestCode));
return;
}
Fragment frag = mFragments.mActive.get(index);
if (frag == null) {
Log.w(TAG, "Activity result no fragment exists for index: 0x"
+ Integer.toHexString(requestCode));
} else {
frag.onActivityResult(requestCode&0xffff, resultCode, data);
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
任何人都知道这意味着什么?
答案 0 :(得分:18)
如果您错过了调用此getParentFragment().startActivityForResult