2013-02-25 170 views
0

我有一個登錄活動,我只想在啓動時顯示並且用戶註銷。因此,當用戶處於登錄活動狀態並單擊後退按鈕時,我想關閉應用程序,而不是返回到登錄活動。活動重新啓動完成()

我已經成功覆蓋後退按鈕回調:

public override bool OnKeyDown(Keycode keyCode, KeyEvent e) 
{ 
    if (keyCode == Keycode.Back) 
    { 
     Console.Out.WriteLine("Close activity"); 
     return true; 
    } 

    return base.OnKeyDown(keyCode, e); 
} 

從回到以前的活動停止的後退按鈕。然而,包括Finish();return true之前確實讓登錄活動重現:(

這是我登錄後使用的代碼:

Intent activity = new Intent(this, typeof(WorkOrderActivity)); 
StartActivity(activity); 

試過一對夫婦Intentflags和LaunchModes的,但不能讓它開始工作。根據在日誌只有一個活動登錄後啓動。

+1

你有沒有考慮過一種「不可見」的飛濺活動(主題:沒有顯示)的可能性,它檢查用戶是否登錄並開始適當的活動?這將是一個更好的方法,讓我知道如果你需要一些 – Droidman 2013-02-25 14:52:22

+0

檢查我的答案 – moDev 2013-02-25 15:16:13

回答

2

這是正常的行爲,顯示上一個Activityfinish()

finish()方法只是關閉其稱之爲

你的活動可以隱藏您的登錄表單並在您的登錄活動onResume()上檢查用戶登錄狀態(並在if他被記錄)

+0

這工作。認爲'完成()'會退出整個應用程序。 – Sunkas 2013-02-25 15:38:09

+0

不要忘記檢查你是否剛剛打開應用程序,因爲如果你沒有,並且用戶已經在啓動時登錄,應用程序將立即關閉:p – 2013-02-25 15:47:27

+0

我只是在登錄之後完成了「完成」。類似於@Mitesh的建議,但沒有標誌。 – Sunkas 2013-02-25 16:03:04

0

開始從登錄活動的另一個活動時,應清除棧。

Intent intent = new Intent(LoginActivity.this, HomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK |  Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 

當用戶註銷時,您可以啓動LoginActivity。

0
public override bool OnKeyDown(Keycode keyCode, KeyEvent e) 
{ 
    if (keyCode == Keycode.Back) 
    { 
     moveTaskToBack(true); 
     return true; 
    } 

    return base.OnKeyDown(keyCode, e); 
} 
2

試試這個它的工作原理..

Intent mIntent = new Intent(this, WorkOrderActivity.class); 
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(mIntent); 

finish();