如题,我想实现的是用fragment实现侧滑菜单按钮的页面切换,但是我的fragment无法覆盖完全覆盖mainactivity的布局。如图mainactivity的两个button仍然显示
下面是我实现fragment切换的代码
//Fragment初始化
private void initFragment() {
fragment0 = new Blank_Fragment();
fragment1 = new AboutUs_Fragment();
fragment2 = new Help_Fragment();
fragments = new Fragment[]{fragment0,fragment1,fragment2};
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.activity_main,fragment0);
transaction.addToBackStack(null);
transaction.commit();// 使transaction生效
navView = (NavigationView) findViewById(R.id.nav_view);
navView.setNavigationItemSelectedListener(changeFragment);
}
//判断选择的菜单
private NavigationView.OnNavigationItemSelectedListener changeFragment= new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.nav_AboutUs:
if(lastfragment!=1) {
switchFragment(lastfragment,1);
lastfragment=1;
mDrawerLayout.closeDrawers();
}
return false; //点击后不会默认选中了
case R.id.nav_Help:
if(lastfragment!=2){
switchFragment(lastfragment,2);
lastfragment=2;
mDrawerLayout.closeDrawers();
}
return false;
}
return false;
}
};
//切换Fragment
private void switchFragment(int lastfragment,int index)
{
FragmentTransaction transaction =getSupportFragmentManager().beginTransaction();
transaction.hide(fragments[lastfragment]);//隐藏上个Fragment
if(!fragments[index].isAdded()){
transaction.add(R.id.activity_main,fragments[index]);
}
transaction.show(fragments[index]).commitAllowingStateLoss();
}
下面是fragment的布局文件