Java Android试图通过碎片将列表嵌套在列表中,抛出IllegalArgumentException:找不到碎片id的视图

Java Android试图通过碎片将列表嵌套在列表中,抛出IllegalArgumentException:找不到碎片id的视图,java,android,android-fragments,Java,Android,Android Fragments,好的,在一个基本的层面上,我试着用一系列的列表来制作一系列的列表。主/流开始模板做得很好,除了我想在我到达最终内容之前再有一层列表。因此,如果你知道一个更好的方法,请随意提出建议 话虽如此,这是我的实现。我开始使用master/flow模板,并尝试将fragment\u detail xml(在我的例子中称为fragment\u game\u detail.xml)从TextView更改为RelativeLayout,这一更改似乎是在抛出IAE 作为参考,这里是我理解的调用堆栈 public v

好的,在一个基本的层面上,我试着用一系列的列表来制作一系列的列表。主/流开始模板做得很好,除了我想在我到达最终内容之前再有一层列表。因此,如果你知道一个更好的方法,请随意提出建议

话虽如此,这是我的实现。我开始使用master/flow模板,并尝试将fragment\u detail xml(在我的例子中称为fragment\u game\u detail.xml)从TextView更改为RelativeLayout,这一更改似乎是在抛出IAE

作为参考,这里是我理解的调用堆栈

public void onItemSelected(String id) {

    if (mTwoPane) {

        // In two-pane mode, show the detail view in this activity by
        // adding or replacing the detail fragment using a
        // fragment transaction.
        Bundle arguments = new Bundle();
        arguments.putString(RiskDetailFragment.ARG_ITEM_ID, id);
        RiskDetailFragment fragment = new RiskDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                                   .replace(R.id.game_detail_container,
                                            fragment)
                                   .commit();

    } else {

        // In single-pane mode, simply start the detail activity
        // for the selected item ID.
        Intent detailIntent = new Intent(this, RiskDetailActivity.class);
        detailIntent.putExtra(RiskDetailFragment.ARG_ITEM_ID, id);
        startActivity(detailIntent);

    }

}
哪个叫

public void onItemSelected(String id) {

    if (mTwoPane) {

        // In two-pane mode, show the detail view in this activity by
        // adding or replacing the detail fragment using a
        // fragment transaction.
        Bundle arguments = new Bundle();
        arguments.putString(RiskDetailFragment.ARG_ITEM_ID, id);
        RiskDetailFragment fragment = new RiskDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                                   .replace(R.id.game_detail_container,
                                            fragment)
                                   .commit();

    } else {

        // In single-pane mode, simply start the detail activity
        // for the selected item ID.
        Intent detailIntent = new Intent(this, RiskDetailActivity.class);
        detailIntent.putExtra(RiskDetailFragment.ARG_ITEM_ID, id);
        startActivity(detailIntent);

    }

}
碎片\游戏\详细信息已更改为

<RelativeLayout android:id="@+id/game_detail"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    style="?android:attr/textAppearanceLarge"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RiskDetailFragment" >

</RelativeLayout>
R.id.game\u detail\u容器必须是层次结构中的视图id。如果这只是您的listview中某个项目的名称,它将不起作用


布局中有哪些视图并检查它们的ID,这是最让我困惑的事情。我根本没有更改那个文件。我将把它添加到主帖子中以供参考。我猜问题是因为我如何调用了另一个片段,但我不确定如何做。基本上,我需要弄清楚如何拥有一个由3个UI组件组成的堆栈,我在这方面花了很多时间。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/game_detail_container"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RiskDetailActivity"
    tools:ignore="MergeRootFrame" />
public void onListItemClick(ListView listView,
                            View view,
                            int position,
                            long id) {

    super.onListItemClick(listView, view, position, id);

    switch(position){
        case 0:
            RiskDetailFragment fragment = new RiskDetailFragment();
            getChildFragmentManager().beginTransaction()
                                     .replace(R.id.game_detail_container,
                                              fragment)
                                     .commit();
            break;
        case 1:
            break;
        default:
            break;

    }

}
 getSupportFragmentManager().beginTransaction()
                               .replace(R.id.game_detail_container,