我必须按两次后退才能退出我的应用程序

I have to press back twice to exit my app

在有人建议 'Just go google it' 之前,我已经尝试了所有我能在网上找到的方法来阻止这种情况发生 'Just go google it'...

如果不够清楚我会明确的,我不想在注册或登录屏幕上点击两次后退。就像我有一个用户永远看不到的 Activity A,A 开始向 B 或 C 发出意图。

在 B 或 C 上我不想点击两次退出应用程序。

我有一个 Activity 我想对用户不可见,它的目的是检查应用程序是否已经注册,如果已经注册,它会启动一个登录意图 Activity,如果应用程序未注册,它会启动注册意图 activity。在登录或注册屏幕上我必须按两次后退才能退出应用程序的问题。

如果我不在这个 Activity 中调用 finish(),后退按钮会将我带到透明 Activity 并且我必须再次按下返回,调用 finish() 意味着我不会回到透明 Activity 但我必须按两次 - 我不想这样。

我已经尝试调用 startActivityForResult() 示例,但这没有任何效果。

Activity 使用透明主题,因为使用 NoDisplay 主题导致异常,谷歌搜索这似乎暗示模拟器有问题,建议的修复是使用透明。

<activity
        android:name=".activity.AppEntryPoint"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Activity 目前没有做太多事情,目前我正在尝试下面的代码,但这也没有效果,我仍然需要按两次后退按钮。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if(!"".equals(((GlobalData) this.getApplication()).password)) {
        navigateToLoginScreen();
    } else {
        registerApplication();
    }
}


private void registerApplication() {
    Intent registerScreen = new Intent(this, RegistrationActivity.class);
    registerScreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(registerScreen);
    finish();
}

private void navigateToLoginScreen() {
    Intent loginScreen = new Intent(this, LoginActivity.class);
    loginScreen.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(loginScreen);
    finish();
}

我该怎么做才能确保用户在进入第二个屏幕时只需按一次返回,无论是登录还是注册屏幕?

我认为这个 solution 可以解决您的问题。

只需将清单文件中的 android:noHistory="true" 添加到您的第一个 activity,如下所示:

<activity
  android:name=".activity.AppEntryPoint"
  android:label="@string/app_name"
  android:noHistory="true"
  android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>