如何避免按下返回按钮/键后返回登录界面?

10

我想为我的学院创建一个应用程序。

问题在于:我的应用程序将有两个布局(登录和仪表板)。

学生可以正确地填写登录表单,进入仪表板,按按钮并填写其他字段。但是如果用户接下来按下返回按钮,它不应返回到登录屏幕,而应保留在仪表板中,或者如果无法保留在仪表板中,则退出应用程序。

然后,如果学生重新打开已经登录的应用程序,他应该自动重定向到仪表板,而不是登录屏幕,除非用户在仪表板上按下注销按钮,那么将重定向回登录屏幕。

你如何做到这一点?

编辑:我实现了2个意图和2个活动,并且新的问题困扰着我,就是当我按下主页按钮并从任务管理器打开应用程序时,它会在留下的活动中打开,但是如果我从图标打开应用程序以再次打开,则如何才能打开最后剩下的活动?


如果您的原始问题得到了回答,您应该接受一个答案并为您的编辑打开一个新问题。这样会获得更多的关注。 - Jon O
谢谢你的回答,但不是我想要的。 - SoldierCorp
@soldierCorp 我也遇到了同样的问题。你能帮我解决这个问题吗?我对你所接受的解决方案感到困惑。https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout。 - seon
3个回答

5
我使用SharedPreferences实现了类似的功能。我这样做的: LoginActivity
SharedPreferences settings;
public void onCreate(Bundle b) {
    super.onCreate(b);
    settings = getSharedPreferences("mySharedPref", 0);
    if (settings.getBoolean("connected", false)) {
        /* The user has already login, so start the dashboard */
        startActivity(new Intent(getApplicationContext(), DashBoardActivity.class));
    }
    /* Put here the login UI */
 }
 ...
 public void doLogin() {
    /* ... check credentials and another stuff ... */
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("connected", true);
    editor.commit();
 }

在你的DashBoardActivity中覆盖onBackPressed方法。这将把你从DashBoardActivity带到你的主屏幕。

@Override
public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
}  

希望这能帮到你。

4

一个想法是在检测到用户未登录时,首先启动仪表板,然后在新的Activity中启动登录。您可以根据需要跳过登录对话框。如果在清单中将登录Activity设置为noHistory="true",则按返回键时将防止其重新出现。


1
将包含此活动的任务移动到活动堆栈的后面。该活动在任务中的顺序不变。
@Override
public void onBackPressed() {
    moveTaskToBack(true);
    super.onBackPressed();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接