片段中的片段在活动中作为主要布局

时间:2016-05-19 01:35:31

标签: android android-fragments

我是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);
}

0 个答案:

没有答案