活动结果片段索引超出范围:0x20001

时间:2013-12-30 04:55:55

标签: android android-viewpager fragment

我有问题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);
}

任何人都知道这意味着什么?

1 个答案:

答案 0 :(得分:18)

如果您错过了调用此getParentFragment().startActivityForResult

,请从您的子活动中调用该方法