Android如何防止返回到之前的Activity?

7
当用户点击返回按钮时,如何防止只返回到登录Activity之前的一个页面。如果在登录Activity之前的最后一页,则退出应用程序。现在,如果我点击返回,它会显示登录页面,并需要重新登录。一旦用户登录,除非他们点击注销按钮,否则不要显示登录Activity。您对此有什么想法吗? 谢谢。

展示您的代码以获得更好的帮助。 - Vickyexpert
2
使用共享偏好设置来存储用户登录会话。一旦用户完成登录活动并从所有活动检查用户是否已登录,则重定向到仪表板(任何屏幕)。当注销时清除该会话。 - Wasim K. Memon
8个回答

17

如果您想防止后退按钮导航回到您的登录Activity,您可以只需在清单文件中为登录Activity设置android:noHistory属性为true

就像这样:

<activity
    android:name=".LoginActivity"
    android:noHistory="true" />

7

始终在启动画面后打开您的 Activity。使用共享首选项来存储登录数据,以便确定要使用哪个 Activity 导航用户。但是,在登录时,如果用户登录成功后点击返回,则会将用户导航回到登录活动。因此,一旦用户成功登录,请在将用户导航到主/首页时清除堆栈上的活动记录。

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish();

2
使用共享首选项来实现此功能:
登录成功后,可以像下面这样编写一个共享首选项:
SharedPreferences settings = getSharedPreferences("your_preference_name", 0); 
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("LoggedIn", true);
editor.commit();

为了防止其他活动返回到登录页面,我们应该在转移到目标屏幕之前完成登录页面。

Intent intent = new Intent();
intent.setClass(this, TargetClass.class);
startActivity(intent);
this.finish();

此外,每当您回到应用程序时,您可以通过此方法直接将用户移动到主页。
SharedPreferences settings = getSharedPreferences("your_preference_name", 0);
boolean isLoggedIn = settings.getBoolean("LoggedIn", false);

if(isLoggedIn )
{
    //Go directly to Homescreen.
}

1
当您从登录活动开始活动时,调用StartActivity()函数后,通过调用finish()函数完成登录活动。

0
在用户登录后打开下一个活动时,在您的登录活动中调用finish()。如有人指出,您可以将您的自动令牌存储在sharedPreference中一次性登录,然后使用该数据来维护会话。

0

当您进行登录并在登录活动中调用Intent时

finish(); 

0

你也可以通过玩弄 Android 清单文件的 launchmode 来实现它。

<activity
    android:name=".yourPackageName.LoginActivity"
    android:launchMode="singleTop"/>

0
In Kotlin, this is how to go about it:
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                        Intent(this, MainActivity::class.java)
                        startActivity(intent)
                        finish()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接