10

我想为我的研究所创建一个应用程序。

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

学生可以正确填写登录表单、进入仪表板、按下按钮以及填写其他字段。但如果用户随后按下后退按钮,它不应返回登录屏幕,而是留在仪表板中,否则,退出应用程序。

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

你怎么能做到这一点?

编辑: 我实现了 2 个意图和 2 个活动,我提出的新问题是,当我按下主页按钮并从任务管理器中打开应用程序时,在剩下的活动中打开,但如果从图标打开打开应用程序再次从第一个活动中打开,就像在最后一个活动中打开一样?

4

3 回答 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);
}  

希望能帮助到你。

于 2012-04-20T21:07:01.400 回答
4

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

于 2012-04-20T20:49:07.477 回答
1

将包含此活动的任务移到活动堆栈的后面。活动在任务中的顺序不变。

@Override
public void onBackPressed() {
    moveTaskToBack(true);
    super.onBackPressed();
}
于 2013-12-20T23:17:52.863 回答