2011-10-04 80 views
0

我正在製作一個需要註銷的Android應用程序。我已經實現了註銷功能,但問題出在我點擊後退按鈕時。之前的活動開始。在註銷時,清除活動歷史堆棧,防止「後退」按鈕從最後打開活動

我已經嘗試通過將其Intent標誌設置爲FLAG_ACTIVITY_CLEAR_TOP來打開登錄活動,這似乎是按照文檔中概述的方式執行的,但沒有實現我將Login活動放置在歷史堆棧底部的目標,並且防止用戶導航回到之前看到的登錄活動。我也嘗試在清單中使用android:launchMode =「singleTop」作爲登錄活動,但是這也不能完成我的目標(並且似乎無論如何都沒有效果)。

我使用的follpowing代碼:

private OnClickListener clickLogoutListener = new OnClickListener() { 
      public void onClick(View v) 
      { 
       AlertDialog.Builder builder = new AlertDialog.Builder(HomePage.this); 
        AlertDialog alertDialog = builder.create(); 


      alertDialog.setMessage("Do you want to logout??"); 
      alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 
          Intent intent1 = new Intent(getApplicationContext(), Login.class); 
          //intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
          intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
          startActivity(intent1); 
          finish(); 
         } 

        }); 

      alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "No", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 
         } 
        }); 
      alertDialog.show(); 


      } 
     }; 
+0

我回答同樣的問題http://stackoverflow.com/questions/7635060/how-to-clear-activity-stack-on-button -click-in-android/7635220#7635220 – ingsaurabh

回答

1

可以使用Intent.FLAG_ACTIVITY_NO_HISTORY

或在清單定義活動

機器人:noHistory =真

我面臨同樣的問題..我使用這些和這解決了我的目的

但是,我不知道你的應用程序流量..所以不能確定這會對你有用..但你可以試試看。

+0

我應該在所有活動中定義這個嗎? – ekjyot

+0

是的肯定..當你打電話的意圖,你不想回到那個新的屏幕,一旦你完成然後通過國旗..或者你肯定從宣佈的時候,然後在清單 – MKJParekh

0

當您按下按鈕時發生事件。所以,你要做的就是通過onkeydown事件處理該事件()方法是這樣--->

公共布爾的onkeydown(INT鍵,KeyEvent的事件){

開關(event.getAction()){ 情況下的KeyEvent .KEYCODE_BACK: 在這裏做些什麼或顯示一些消息 break; } return true; }

0

嘗試:

Intent intent = new Intent(this, LoginActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_CLEAR_TOP); 

...