Firebase在应用程序上注销后,“返回”按钮将返回首页

时间:2018-11-16 08:28:05

标签: java android firebase firebase-authentication logout

我的问题与这篇文章非常相似:(When I press back button on login page it will go to main menu (after I select yes for logout in MainMenu activity))。

基本上,即使选择“是”选项注销后,它也确实使我回到缩进页面(“登录”页面)。但是,当我在实际的手机(S7 Edge +)和2个仿真器(Nexus 4和Pixel 2 XL)上按“后退”按钮时,它又带我回到了仪表盘页面,不是那样。

**我尝试过的是我在注销功能和菜单中添加了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中没有发现错误,所以我不确定如何解决此问题?

有人可以解决吗?请指导我。

谢谢。

2 个答案:

答案 0 :(得分:0)

 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();
}

**只需尝试一下**

答案 1 :(得分:0)

因此,为作者工作的实际解决方案是使用finishAffinity(),而不是接受的答案。哪个对我也有用。