2015-09-22 26 views
0

我試圖回到前面的片段時,單擊後退按鈕。如果頁面堆棧中沒有可用的頁面,則應該再次顯示回退退出。片段頁面堆棧計數始終爲0在android

我想這樣。

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
      int pageCount = getFragmentManager().getBackStackEntryCount(); 
      if (pageCount != 0) { 
       this.getFragmentManager().popBackStack(); 
       return true; 
      } 
      else 
      { 
       if (doubleBackToExitPressedOnce) { 
         super.onBackPressed(); 
         return true; 
        } 

        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); 
      } 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

這裏我檢查頁數。但它總是顯示爲0。

我總是在所有fragment.replace

FragTrans.addToBackStack(null); 

加入這一行,請幫我解決這個問題。當我點擊後退按鈕它應該轉到上一頁。如果沒有可用的頁面,則表示應顯示Toast消息。

+1

確保不要混用FragmentManager和SupportFragmentManager。 – Okas

回答

0

試試吧,使用fragment.add代替fragment.replace。它會允許 保持你的所有碎片重新堆棧。如果您使用 fragment.replace,那麼它將只保留一個堆棧片段。

示例代碼:

FragmentManager fragmentManager = getFragmentManager(); 
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
        HelloFragment hello = new HelloFragment(); 
        fragmentTransaction.add(R.id.fragment_container, hello, "HELLO"); 
        fragmentTransaction..addToBackStack("optional tag"); 
        fragmentTransaction.commit(); 
+0

我嘗試使用add()。仍然頁數是0. –

+0

請確保您沒有使用與所有片段fragmentTransaction.add相同的TAG。在我的示例代碼中,其「HELLO」 –