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

Hut*_*eri 5 android fragment android-viewpager

我有问题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);
Run Code Online (Sandbox Code Playgroud)

并调用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);
}
Run Code Online (Sandbox Code Playgroud)

谁知道这是什么意思?

小智 18

如果您错过了调用此方法,请从您的子活动中调用方法 getParentFragment().startActivityForResult