2012-04-20 80 views
10

我想爲我的研究所創建一個應用程序。如何避免按下後退按鈕/鍵返回登錄佈局?

問題是:我的應用程序將有兩個佈局(登錄和儀表板)。

學生可以正確填寫登錄表單,進入儀表板,按下按鈕並填寫其他字段。但是,如果用戶按下後退按鈕,則不應該返回到登錄屏幕,而是保留在儀表板中,否則將退出應用程序。

然後,如果學生重新打開應用程序並且已經記錄,他應該自動重定向到儀表板,而不是登錄屏幕,除非用戶按下儀表板上的註銷按鈕,然後將他重定向回登錄屏幕。

你怎麼能這樣做?

編輯:我實現了2個意圖和2周的活動,和新的問題出現我的是,當我按下home鍵,並從任務管理器我打開應用程序,在留活動開,但如果從圖標打開,從第一個活動再次打開該應用程序,最後一個打開的應該是什麼?

+0

如果您的原始問題得到解答,您應該接受答案併爲您的修改打開一個新問題。它將以這種方式獲得更多的可見性。 – 2012-04-23 19:31:43

+0

謝謝你這個人,你的回答沒問題,但不是我想要的! – SoldierCorp 2012-04-24 03:23:34

+0

@soldierCorp我有同樣的問題。你能幫我解決這個問題嗎?我對你接受的解決方案感到困惑。 https://stackoverflow.com/questions/45183038/restrict-multiple-login-for-same-user-without-logout。 – seon 2017-07-20 05:26:28

回答

5

我用SharedPreferences實現了類似的東西。我這樣做:

LoginActivity

SharedPreferences settings; 
public void onCreate(Bundle b) { 
    super.onCreate(b); 
    settings = getSharedPreferences("mySharedPref", 0); 
    if (settings.getBoolean("connected", false)) { 
     /* The user has already login, so start the dashboard */ 
     startActivity(new Intent(getApplicationContext(), DashBoardActivity.class)); 
    } 
    /* Put here the login UI */ 
} 
... 
public void doLogin() { 
    /* ... check credentials and another stuff ... */ 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("connected", true); 
    editor.commit(); 
} 

在你DashBoardActivity覆蓋onBackPressed方法。這會將您從DashBoardActivity帶到您的主屏幕。

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 

希望它有幫助。

4

一個想法是首先啓動儀表板,然後在新的Activity上啓動儀表板,如果您檢測到用戶未登錄,則可以在其上啓動登錄。然後,您可以根據需要跳過登錄對話框。如果您在清單中的登錄Activity上設置noHistory="true",它將被阻止在重新按下時重新出現。

1

將包含此活動的任務移到活動堆棧的後面。任務內的活動順序不變。

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
    super.onBackPressed(); 
} 
相關問題