2016-08-19 58 views
3

我想在按兩次按鈕後關閉應用程序。我有不同的片段來加載活動。我只想關閉應用程序,當我在主(Home)片段和用戶按兩次按鈕時。但它不能正常工作。這裏是我的代碼以關閉活動: -將按鈕按下兩次後關閉活動

@Override 
public void onBackPressed() { 

    if (getFragmentManager().getBackStackEntryCount() == 0) { 
     //super.onBackPressed(); 

     if (doubleBackToExitPressedOnce) { 
      super.onBackPressed(); 
      return; 
     } 

     this.doubleBackToExitPressedOnce = true; 
     Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       doubleBackToExitPressedOnce=false; 
      } 
     }, 2000); 

    } else { 
     backFlag = 1; 
     getFragmentManager().popBackStack(); 
    } 

這是給我的信息「按後退按鈕兩次」,但片段沒有轉移到主片段。請幫我解決這個

編輯問題

if (getFragmentManager().getBackStackEntryCount() == 0) { 
     super.onBackPressed(); 

    } else { 
     getFragmentManager().popBackStack(); 
    } 
+0

請檢查您已添加事務回棧(getBackStackEntryCount()的調試值大於0,如果您在其他片段上) – Ramit

+0

它不大於0 – Mahesh

+0

表示您不在堆棧中添加碎片事務。所以,如果你在一個除家以外的片段,然後在後面的新聞應用程序將直接退出,但我認爲你希望首先在家中,然後顯示敬酒應用程序退出 – Ramit

回答

0

您可以通過保持兩秒間隔嘗試這種替代方法達到這個再按回:

private static final int TIME_INTERVAL = 2000; // # milliseconds, desired time passed between two back presses. 
private long mBackPressed; 

@Override 
public void onBackPressed() 
{ 
    if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) 
    { 
     super.onBackPressed(); 
     return; 
    } 
    else { Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show(); } 

    mBackPressed = System.currentTimeMillis(); 
}