【发布时间】:2011-04-19 06:36:39
【问题描述】:
我有 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