我的应用程序从活动A(登录屏幕)开始,我总是想要在活动堆栈的底部。
基于登录后的一些逻辑,我启动一些其他活动B-Z。应用程序中有一个菜单,允许您在任何活动B-Z之间切换。
如果用户按下后退按钮足够多次,我不希望他们返回登录屏幕。如果在Activity上按下后退按钮,我希望将用户发送到Android主屏幕,该活动将活动A作为堆栈上的下一个活动。此活动不保证是活动A启动的活动,因为我的活动使用singleTop。
想法?
我能想到的唯一另一个选择是删除singleTop,而Activity A启动的任何Activity都记得(我的活动都来自一个基类,我将用它来做)。
另一种可能性是在onBackPressed处理程序中执行以下操作:
if (getParent().getClass().getName().equals(ActivityA.class.getName())) {}
答案 0 :(得分:1)
虽然不是你问题的直接答案,但如果问题是那个
我不希望他们返回登录界面
然后,当用户成功登录时,经典解决方案是finish()
登录Activity
。这样您就可以确保用户永远不会返回Activity
。
答案 1 :(得分:0)
要执行此操作,为什么不获取用户登录信息,并将其存储在应用程序私有共享首选项中。然后,当用户启动您的应用程序时,您可以从活动A中读取共享首选项,并自动将它们登录到活动b。
类似的东西:
SharedPreferences myPrefs = getBaseContext().getSharedPreferences("MyPrefs", SharedPreferences.MODE_PRIVATE);
if((myPrefs.getString("username",null) != null) && (myPrefs.getString("password",null) !=null)){
// Make sure your user is a member of your application
// auto log in to the home page
Intent bIntent = new Intent(getBaseContext(), BIntent.class);
startActivity(bIntent);
}
有关如何使用共享首选项的更多参考
http://developer.android.com/reference/android/content/SharedPreferences.html
然后,如果你想要非常光滑,在每个Activity中调用onDestroy()方法时存储Class名称,将每个类重写为最后一个打开的Activity。因此,在关闭应用程序之前,用户最后一次活动存储在首选项中,您可以在登录活动中阅读,然后从那里启动b-z
这将使登录活动始终在内存中,因为它首次启动时会检查您的用户凭据。