活动结果片段索引超出范围:0x20001
Posted
技术标签:
【中文标题】活动结果片段索引超出范围:0x20001【英文标题】:Activity Result Fragment Index Out Of range : 0x20001 【发布时间】: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 你说得对,我没有意识到我们必须从父片段的结果开始活动。已经解决了,谢谢! 我已经回答了,如果它对你有用,你可以接受。谢谢;-) 【参考方案1】:如果您错过了调用此getParentFragment().startActivityForResult
,请从您的子活动中调用方法
【讨论】:
以上是关于活动结果片段索引超出范围:0x20001的主要内容,如果未能解决你的问题,请参考以下文章