【发布时间】:2014-01-16 23:39:34
【问题描述】:
我有 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);
}
有人知道是什么意思吗?
【问题讨论】:
-
在你activity的onActivityResult中,调用super.onActivityResult()检查你是否调用了这个方法。
-
我已经知道了,但事实并非如此
-
您是否从您的子活动 getParentFragment().startActivityForResult 调用此方法,如果您可以添加更多代码会更好.. 还有 logcat
-
你说得对,我没有意识到我们必须从父片段的结果开始活动。已经解决了,谢谢!
-
我已经回答了,如果它对你有用,你可以接受。谢谢;-)
标签: android android-viewpager fragment