活动结果片段索引超出范围: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的主要内容,如果未能解决你的问题,请参考以下文章

updateSearchResults 方法中 didSelectRow 的索引超出范围

Java charAt() 字符串索引超出范围:5

致命错误:数组索引超出范围。刷新时迅速

企业超出经营范围怎么处罚

索引超出范围 SwiftUI

索引超出范围的 SwiftUI 问题