2

我有 3 个活动:

  1. 登录屏幕。
  2. 主屏幕。
  3. 配置文件屏幕。

loginscreen 是第一次调用的主要活动,在单击登录按钮时,我使用以下代码调用主屏幕活动:

finish(); // I am calling finish because I don't want user to press back key at mainscreen and get back to login screen.
Intent it = new Intent(LoginScreen.this,MainScreen.class);
startActivity(it);

在我的主屏幕中,我有一个注销按钮,我正在使用此代码进行注销:

finish();
Intent it = new Intent(MainScreen.this,LoginScreen.class);
containerObject.startActivity(it);

我不知道为什么,但这段代码没有带我进入登录屏幕。

如果我将上面的代码更改为此代码:

finish();
Intent it = new Intent(MainScreen.this,ProfileScreen.class);
containerObject.startActivity(it);

该代码工作得很好,并带我进入 profilescreen。

让我明确一点,我已将所有 3 项活动添加到清单中。

我是否因为“LoginScreen”是主要活动而遇到这个问题?

4

1 回答 1

0

迟到总比不到好。

在您的注销按钮单击处理程序中,您必须使用 containerObject 启动活动,因为您已经完成了 MainScreen 活动,因此您必须转到活动的父容器。

logoutButtonClick(../..[

    finish();
    Intent it = new Intent(MainScreen.this,LoginScreen.class);
    containerObject.startActivity(it);
}

为确保活动完成,请在单击处理程序中调用 this.finish,但要在开始您的意图之后。

logoutButtonClick(../.. {
    startActivity(new Intent(this, LoginScreen.class));
    this.finish();
}

然后在 LoginScreen 活动中覆盖您的 onBackPressed 事件。因此,后台将继续将用户带到登录屏幕。

@Override
public void onBackPressed() {
    startActivity(new Intent(this, LoginScreen.class));
    this.finish();
}

我不确定您是否希望在三个活动之间管理应用程序期间的导航,因此我不会更详细地介绍 ProfileScreen 活动和其他两个活动之间的导航,但我相信您有足够的信息来推进这一点。

当我想要保护我的应用程序的密码保护区域时,我会覆盖和管理我的所有后推事件,并仔细管理整个应用程序和应用程序生命周期中的导航,因此应用程序无法在受保护的活动上关闭和重新打开用密码。

于 2015-11-25T12:23:01.627 回答