后退按钮将在firebase注销应用程序后带到主页



我的问题与这篇文章非常相似:(当我在登录页面上按下后退按钮时,它将进入主菜单(在主菜单活动中选择是注销后(。

基本上,即使在我选择"是"选项注销后,它也会让我回到缩进的页面(登录页面(。然而,当我在我的实际手机(S7 Edge+(和2个模拟器(Nexus 4&Pixel 2 XL(上按下后退按钮时,它会再次将我带到仪表板页面,而不应该是这样。

**我尝试的是在Logout函数和菜单中添加finish((,如下所示:

注销功能/方法

private void Logout(){
firebaseAuth.signOut();
finish();
startActivity(new Intent(SecondActivity.this, MainActivity.class));
finish();
}

菜单

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.logoutMenu: {
final AlertDialog.Builder builder = new AlertDialog.Builder(SecondActivity.this);
builder.setMessage("Are you sure you want to logout?");
builder.setCancelable(true);
builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
startActivity(new Intent(SecondActivity.this, SecondActivity.class));
}
});
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(SecondActivity.this, "You are succesfully signed out!", Toast.LENGTH_LONG).show();
Logout();
finish();
}
});
AlertDialog alertDialog = builder.create();
alertDialog.show();
break;
}
case R.id.profileMenu: {
startActivity(new Intent(SecondActivity.this, UpdateProfileActivity.class));
break;
}
case R.id.passwordMenu: {
startActivity(new Intent(SecondActivity.this, UpdatePasswordActivity.class));
break;
}
}
return super.onOptionsItemSelected(item);
}

这个问题仍然存在。logcat中没有发现错误,所以我不确定如何克服这个问题?

有人有解决方案吗?请务必引导我。

谢谢。

因此,对作者有效的实际解决方案是使用finishAffinity(),但不是公认的答案。这对我也有效。

private void Logout(){
firebaseAuth.signOut();
Intent intent = new Intent(SecondActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}

**试试这个**

最新更新