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