返回上一个片段给出空容器

时间:2019-04-18 16:49:38

标签: android android-fragments android-architecture-navigation

我正在开发带有菜单栏的android应用程序,我具有mainactivity,它具有菜单栏和容器内的片段导航。应用启动后,会自动在main_container中设置一个片段

<FrameLayout
       android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />
    </FrameLayout>

导航转到:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/spliFragment">
<fragment
    android:id="@+id/spliFragment"
    android:name="com.example.tutorme.ui.SearchResultsFragment"
    android:label="SearchResultsFragment"
    tools:layout="@layout/search_results_fragment">
</fragment>

现在,如果我按菜单中的某个项目,我想替换main_container中的片段,我可以在onNavigationItemSelected中执行此操作:

 else if (id == R.id.xx){
        Fragment newFrag = new xxFrag();
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.main_container, newFrag);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    }

这一切都可以,但是当我按下返回按钮时,它可以返回,但不会在我更换的容器中破碎。它返回到一个空容器。 我将如何解决这个问题?

0 个答案:

没有答案