我必须按两次后退才能退出我的应用程序
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>
在有人建议 '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>