, когда я нажимаю кнопку «Назад», она перемещается к предыдущему фрагменту, но также отображает пустой экран, и мне нужно щелкнуть по нему, чтобы удалить его. Как мне избавиться от этого пустого экрана? Я видел, как он каким-то образом подключен к первому addToBackStack
, но я все еще не мог это исправить
вот мой onNavigationItemSelected
метод:
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment fragment=null;
switch (menuItem.getItemId()) {
case R.id.nav_home:
fragment=new HomeFragment();
break;
case R.id.nav_income:
fragment=new IncomeFragment();
break;
case R.id.nav_expense:
fragment=new ExpenseFragment();
break;
case R.id.nav_sign_out:
FirebaseAuth mAuth = FirebaseAuth.getInstance();
mAuth.signOut();
startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
Toast.makeText(getApplicationContext(), "Signed Out", Toast.LENGTH_LONG).show();
break;
}
if(fragment!=null)
getSupportFragmentManager().beginTransaction().
replace(R.id.fragment_container, fragment).addToBackStack("").commit();
return true;
}
вот мой onBackPressed()
метод:
public void onBackPressed() {
final FragmentManager fragmentManager = getSupportFragmentManager();
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.AlertDialogCustom);
if (fragmentManager.getBackStackEntryCount() == 0) {
builder.setTitle("Sign out");
builder.setMessage("Are you sure you want to sign out?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
firebaseAuth.signOut();
dialog.dismiss();
startActivity(new Intent(getApplicationContext(), WelcomeActivity.class));
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
} else {
fragmentManager.popBackStack();
}
AlertDialog alert = builder.create();
alert.show();
}
}