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