2016-06-09 158 views
1

我有一個活動。這項活動有一個查看傳呼機。這個viewpager有五個頁面,這些頁面在其內容中打開一個片段。例如,當我在第一頁中打開兩個片段,然後在第二個頁面中打開一個片段時,就會出現問題。我回到第一頁。我點擊工具欄中的返回按鈕。我使用popBackStack()代碼去除當前可見的碎片。 但它刪除所有的後臺堆棧。我該如何解決這個問題?popBackStack刪除所有堆棧?

getSupportFragmentManager().popBackStack(str, 
FragmentManager.POP_BACK_STACK_INCLUSIVE); 

我的算法:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if(id == android.R.id.home){ 
      onBackPressed(); 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
     public void onBackPressed() { 
      if(getSupportFragmentManager() != null){ 
       int count = getSupportFragmentManager().getBackStackEntryCount(); 
       Log.i("Fragment Stack Count : ", count+""); 
       if (count <= 0) { 
        super.onBackPressed(); 
       } else { 
        checkBackStack(); 
       } 
      } 
     } 

     private void checkBackStack(){ 
      Log.i("BackStack", "Home Activity Count > 0"); 
      FragmentManager fm= getSupportFragmentManager(); 
      if(fm.getBackStackEntryCount() > 0){ 
       Log.i("BackStack", "Count > 0"); 
       for(int i = (fm.getBackStackEntryCount()-1) ; i >= 0 ; i--){ 
        FragmentManager.BackStackEntry backStackEntry = fm.getBackStackEntryAt(i); 
        String str= backStackEntry.getName(); 
        Log.i("BackStack", " Name : "+str); 
        BaseMenuFragment fragment= (BaseMenuFragment) fm.findFragmentByTag(str); 
        if(((ViewGroup) fragment.getView())!= null && ((ViewGroup) fragment.getView().getParent()) != null){ 
         int contentId = ((ViewGroup) fragment.getView().getParent()).getId() ; 
         if(contentId == frames[viewPager.getCurrentItem()]){ 
          Log.i("BackStack", "equals = true"); 
          getSupportFragmentManager().popBackStack(str, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
          return; 
         } 
        } 
       } 
      } 
     } 
+0

它是否多次輸入'if(contentId == ...)'? –

+0

另外,什麼是'幀[]'? –

+0

以及如果您不使用'POP_BACK_STACK_INCLUSIVE'會發生什麼? –

回答

0

我覺得this可以幫助你。我前段時間遇到過這個問題,我找到了一個解決方案。

這不是圖書館,它是一個演示應用程序。如果結構是類似於Eclipse的 ,我很抱歉。我已經有一段時間了。