Я использую Навигационный ящик и Нижнюю навигацию одновременно, для этого у меня есть одна проблема: я создаю фрагмент под названием «Домашний фрагмент» и при создании ящика навигации. Я вызываю этот фрагмент, тогда все остальные фрагменты возвращаются назад. кнопка. В нижней части навигации у меня есть меню Home, когда я нажимаю на него, он открывает фрагмент со стрелкой назад, и я хочу открыть его с помощью меню ящика, так как мне это сделать?
Код навигационного ящика при создании ::
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation_drawer);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fragment = getSupportFragmentManager().findFragmentById(R.id.baseframe);
final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
// toolbar.setNavigationIcon(R.drawable.ic_menu_black_24dp);
toggle.syncState();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
Log.d(TAG, "Fragment back-stack count : " + getSupportFragmentManager().getBackStackEntryCount());
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
@SuppressLint("PrivateResource") final Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back_black_24dp);
upArrow.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
} else {
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
toggle.syncState();
navigationView.getMenu().getItem(0).setChecked(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(GravityCompat.START);
}
});
if (!(fragment instanceof Homefragement)) {
getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
navigationView.getMenu().getItem(0).setChecked(true);
}
}
if (fragment instanceof Homefragement) {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
} else {
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
}
});
invalidateOptionsMenu();
getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
navigationView.getMenu().getItem(0).setChecked(true);
}
private boolean sendBackToHome = false;
@Override
public void onBackPressed() {
if(!sendBackToHome) {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawers();
} else {
super.onBackPressed();
}
} else {
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
}
}
и для нижней навигации ::
case R.id.navigation_home:
menuItem.setChecked(true);
fm = getSupportFragmentManager();
getSupportFragmentManager().beginTransaction().replace(R.id.baseframe, Homefragement.newInstance(null)).commit();
return true;