有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么finish()使所有活动都不能返回到以前的活动?

我是Android Java新手,我对其意图有一些疑问。这是应用程序的意图概念

enter image description here

首先,启动活动有两个按钮,让用户将屏幕按到注册活动登录活动。除此之外,用户还可以按后退按钮返回启动活动。所以它不包括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) 个答案