我在我的應用程序上有一個登錄屏幕,截至目前,您可以按返回按鈕返回到登錄屏幕。我不希望這種情況發生。停止活動並重新啓動它(android)
用戶登錄後,應用程序應該停止登錄活動,以便用戶無法回到該活動。在菜單屏幕上,我有一個註銷按鈕,用於在已停止後重新啓動登錄活動。
我一直在尋找和測試一個小時左右,我無法找到答案。
我在我的應用程序上有一個登錄屏幕,截至目前,您可以按返回按鈕返回到登錄屏幕。我不希望這種情況發生。停止活動並重新啓動它(android)
用戶登錄後,應用程序應該停止登錄活動,以便用戶無法回到該活動。在菜單屏幕上,我有一個註銷按鈕,用於在已停止後重新啓動登錄活動。
我一直在尋找和測試一個小時左右,我無法找到答案。
如果你不希望用戶能夠回到登錄活動,簡單地排除它從最近的堆棧,在應用程序清單android:excludeFromRecents
attribure添加到您的活動宣言,像這樣:
<activity android:name=".Login" android:excludeFromRecents="true"></activity>
然後一旦您的登錄活動完成任務,您(很可能)會轉到您應用的下一個活動。一旦你打電話startActivity()
勞克新的,只需撥打finish();
完成登錄actvity:
...
startActivity(intentToLaunchNextActivity);
finish();
成功登錄後,您可以致電Actvity.finish()
。
要重新啓動登錄活動,請使用Activity.startActivity(intent)
。
嘗試之一:
登錄在你的登錄活動成功後,調用finish()上的活動啓動下一個活動後。這將有效地銷燬登錄活動並將其從活動返回堆棧中移除(因此無法再導航)。例如:
onLoginComplete(){
startActivity(new Intent(this, NextActivity.class));
finish();
}
或者,在您的登錄活動的onResume中,檢查登錄狀態並完成如果爲true。這樣,當用戶來到這個活動也將被關閉(他們絕不會真正看到它),如果他們已經登錄喜歡的東西:
@Override
public void onResume(){
super.onResume();
if(isLoggedIn())
finish();
}
當你離開的登錄屏幕上的全成登錄,請致電finish()
這將從堆棧中移除您的活力。
你的註銷按鈕應該重新調用登錄頁面是這樣的:
Intent intent = new Intent(TheCurrentActivity.this, YourLoginScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
這將加載登錄屏幕,並清除當前活動堆棧確保你不能註銷後回去。
集noHistory = true
在manifest for your login activity。這可以防止活動存儲在後退堆棧中。