片段小部件仍保留先前的片段

时间:2019-01-19 10:48:42

标签: android fragment

我有一个导航抽屉,可以在活动中交换片段。问题是,当我更改为另一个片段时,从最初的片段开始的线性布局仍保留在其他片段的顶部。回到初始片段时,线性布局加倍。

这是我最初的片段活动

<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:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer"
tools:context=".MainActivity"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"
    android:id="@+id/toolbar"/>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/fragment_container"
        android:name="com.brasov.mesota.cim.HomeFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</FrameLayout>

<android.support.design.widget.NavigationView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:id="@+id/navigation"
    app:menu="@menu/drawer_menu"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/header_layout"
    android:background="@color/navBackground" >
</android.support.design.widget.NavigationView>

这是我的活动课

public class MainActivity extends AppCompatActivity  implements NavigationView.OnNavigationItemSelectedListener {
protected DrawerLayout drawerLayout;
private NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = findViewById(R.id.toolbar);
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_menu);
    drawerLayout=findViewById(R.id.drawer);
    navigationView=findViewById(R.id.navigation);
    navigationView.setNavigationItemSelectedListener(this);
    }
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            drawerLayout.openDrawer(GravityCompat.START);
            return true;
    }
    return true;
}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.nav_home:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new HomeFragment()).addToBackStack(null).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_news:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new NewsFragment()).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_gallery:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new GalleryFragment()).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_offer:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new OfferFragment()).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_orar:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new ScheduleFragment()).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_people:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new PeopleFragment()).commit();
            drawerLayout.closeDrawers();
            break;
        case R.id.nav_contact:
            item.setChecked(true);
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,new ContactFragment()).commit();
            drawerLayout.closeDrawers();
            break;
    }
            return false;
    }

}

0 个答案:

没有答案