在销毁所有碎片后显示空白活动

时间:2017-08-07 11:08:47

标签: android android-layout android-fragments

我创建了一个主活动,里面有一个片段容器,我在导航菜单选项选择中替换了很多片段。它的工作正常,但问题是:

  1. 当我单击两次导航项目时,会打开两个相同的片段,我必须按两次后退按钮才能返回。
  2. 当所有片段在按下后被销毁时,我看到一个空页面(我猜这可能是主要的活动页面)。
  3. layout_main.xml

    for (i in 1:length(file_list)){
      assign(file_list[i], 
             read.csv(paste(folder, file_list[i], sep=''))
      )}
    

    MainActivity.java

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout 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/main_activity_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/pageBackgroundColor"
        tools:context="co.sd.app.MainActivity">
    
        <RelativeLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <android.support.design.widget.NavigationView
            android:id="@+id/side_nav_drawer"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:padding="0sp"
            app:menu="@menu/side_navigation_menu" />
    
    </android.support.v4.widget.DrawerLayout>
    

    请在此建议我。

1 个答案:

答案 0 :(得分:3)

这将解决您的第二个问题,当您向容器中添加片段时,它们将添加到堆栈中,

if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
            finish();
        }
        else {
            super.onBackPressed();
        }

所以当堆栈条目数为1时,你必须完成活动。

对于第一个问题,你必须使用“pop back stack”再次添加相同的片段时使用:getSupportFragmentManager().popBackStack();