我是android的新手,我正在开发一个应用程序,但我被阻止了一些东西: 我有我的activity_main:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
此活动包含1个片段(drawer_layout_fragment),我的片段(drawer_layout_fragment)包含另一个片段(left_drawer),它是导航抽屉片段:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout_fragment"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="DrawerLayoutFragment">
<!-- The navigation drawer -->
<fragment
android:id="@+id/left_drawer"
android:name="NavigationDrawerFragment"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
tools:layout="@layout/fragment_navigation_drawer"/>
</android.support.v4.widget.DrawerLayout>
当我将片段添加到片段管理器时,一切正常,但当我在下一个视图中并且单击后退按钮时,我看到此错误:重复ID 0x7f0d00a5,标记null或父ID 0x7f0d00f4与另一个片段 我已经读过错误发生,因为我有嵌套的片段,但不知道我怎么能处理这个我尝试使用getChildFragmentManager添加了我的drawer_layout片段但是同样的错误。 这就是我将drawer_layout片段添加到片段管理器的方式:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DrawerLayoutFragment fragment = new DrawerLayoutFragment();
getSupportFragmentManager()
.beginTransaction()
.add(R.id.fragment_container, fragment)
.commit();
}
这是DrawerLayoutFragment中的代码,它将我带到下一个片段。唯一的区别是我在这里使用.replace而不是.add:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.add) {
NextFragment fragment = new NextFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
}
return super.onOptionsItemSelected(item);
}