【问题标题】:Preventing user navigation to activities after logout注销后阻止用户导航到活动
【发布时间】:2011-04-19 06:36:39
【问题描述】:

我有 3 项活动:

  1. 登录屏幕。
  2. 主屏幕。
  3. 个人资料屏幕。

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

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”是主要活动吗?

【问题讨论】:

  • 我会推荐一种更好的方法来处理登录屏幕的转换,这将使活动堆栈保持传统结构并避免后退按钮问题。将主屏幕保持为主(默认)活动。在此处检查用户是否已登录,如果未登录,请使用startActivityForResult 调用您的登录屏幕。 developer.android.com/reference/android/app/… 用户登录后,使用setResult() 退出登录活动,这将使您返回主活动。
  • 除了第一条评论中提到的,为什么要先调用finish()再发送intent?尝试更改顺序。
  • 感谢您的 cmets,但如果我们能讨论此代码出了什么问题,我们将不胜感激。谢谢:)
  • 您尝试过按照我的建议更改订单吗?
  • 我试过了,但什么也没发生,但我不知道我做了什么改变,但它开始工作了。 :)

标签: android android-intent android-activity onbackpressed


【解决方案1】:

迟到总比不到好。

在您的注销按钮单击处理程序中,您必须使用 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 事件。所以 backpress 将继续将用户带到登录屏幕。

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

我不确定您是否希望在 三个活动之间的应用程序,所以我不会更详细地在 ProfileScreen 活动和其他两个,但我确定您有足够的信息可以移动 继续前进。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2016-05-11
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多