java为什么finish()使所有活动都不能返回到以前的活动?
我是Android Java新手,我对其意图有一些疑问。这是应用程序的意图概念
首先,启动活动有两个按钮,让用户将屏幕按到注册活动和登录活动。除此之外,用户还可以按后退按钮返回启动活动。所以它不包括finish()
//Login Activity
Intent i = new Intent(LaunchActivity.this, LoginActivity.class);
LaunchActivity.this.startActivity(i);
在AndroidManifest中,主活动(黄色)是第一个活动
<activity
安卓:name=".MainActivity">
<intent-filter>
<action 安卓:name="安卓.intent.action.MAIN" />
<category 安卓:name="安卓.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在主活动中,我将检查用户是否登录到应用程序。如果尚未登录,我将使用此代码将屏幕推到启动活动。(我也在“注销”按钮上使用此代码)
Intent i = new Intent(MainActivity.this, LaunchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
finish();
因此,我使用finish()
来防止用户返回到主活动
但问题是finish()
也让登录和注册活动无法返回到启动活动
那么finish()
是否使所有活动都不能返回到以前的活动?为什么以及如何修复它
由于评论,我知道问题出在旗子上。因此,我在检查登录状态和注销时删除了这些标志。但在我成功登录(登录屏幕到主屏幕)后,我可以按后退按钮返回主屏幕上的启动屏幕。为什么?它只在第一次登录时发生。在我重新启动应用程序后,应用程序工作正常。这是我在登录按钮上使用的代码
Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
finish();
是因为我们不能在登录屏幕上破坏启动屏幕吗?但是添加这些标志应该会毁掉所有的历史,对吗
共 (0) 个答案