有没有办法检测在按下后退按钮时将恢复哪些活动?

时间:2014-01-20 21:06:23

标签: android

我的应用程序从活动A(登录屏幕)开始,我总是想要在活动堆栈的底部。

基于登录后的一些逻辑,我启动一些其他活动B-Z。应用程序中有一个菜单,允许您在任何活动B-Z之间切换。

如果用户按下后退按钮足够多次,我不希望他们返回登录屏幕。如果在Activity上按下后退按钮,我希望将用户发送到Android主屏幕,该活动将活动A作为堆栈上的下一个活动。此活动不保证是活动A启动的活动,因为我的活动使用singleTop。

想法?

我能想到的唯一另一个选择是删除singleTop,而Activity A启动的任何Activity都记得(我的活动都来自一个基类,我将用它来做)。

另一种可能性是在onBackPressed处理程序中执行以下操作:

if (getParent().getClass().getName().equals(ActivityA.class.getName())) {}

2 个答案:

答案 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

这将使登录活动始终在内存中,因为它首次启动时会检查您的用户凭据。