2012-09-05 96 views
0

我在我的應用程序上有一個登錄屏幕,截至目前,您可以按返回按鈕返回到登錄屏幕。我不希望這種情況發生。停止活動並重新啓動它(android)

用戶登錄後,應用程序應該停止登錄活動,以便用戶無法回到該活動。在菜單屏幕上,我有一個註銷按鈕,用於在已停止後重新啓動登錄活動。

我一直在尋找和測試一個小時左右,我無法找到答案。

回答

0

如果你不希望用戶能夠回到登錄活動,簡單地排除它從最近的堆棧,在應用程序清單android:excludeFromRecents attribure添加到您的活動宣言,​​像這樣:

<activity android:name=".Login" android:excludeFromRecents="true"></activity> 

然後一旦您的登錄活動完成任務,您(很可能)會轉到您應用的下一個活動。一旦你打電話startActivity()勞克新的,只需撥打finish();完成登錄actvity:

... 
startActivity(intentToLaunchNextActivity); 
finish(); 
0

成功登錄後,您可以致電Actvity.finish()

要重新啓動登錄活動,請使用Activity.startActivity(intent)

0

嘗試之一:

登錄在你的登錄活動成功後,調用finish()上的活動啓動下一個活動後。這將有效地銷燬登錄活動並將其從活動返回堆棧中移除(因此無法再導航)。例如:

onLoginComplete(){ 
    startActivity(new Intent(this, NextActivity.class)); 
    finish(); 
} 

或者,在您的登錄活動的onResume中,檢查登錄狀態並完成如果爲true。這樣,當用戶來到這個活動也將被關閉(他們絕不會真正看到它),如果他們已經登錄喜歡的東西:

@Override 
public void onResume(){ 
    super.onResume(); 
    if(isLoggedIn()) 
     finish(); 
} 
0

當你離開的登錄屏幕上的全成登錄,請致電finish()這將從堆棧中移除您的活力。

你的註銷按鈕應該重新調用登錄頁面是這樣的:

Intent intent = new Intent(TheCurrentActivity.this, YourLoginScreen.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
finish(); 

這將加載登錄屏幕,並清除當前活動堆棧確保你不能註銷後回去。