2

在我的代碼我得到
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState坡平返回堆棧,而不會導致IllegalStateException異常

和我搜索statckoverflow我得到了下面的代碼解決方案。

現在我沒有得到IllegalStateException,但問題是..下面的代碼是清除整個堆棧跟蹤。但我只想彈出最後一個交易/入口在後臺。怎麼做??

  if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
       getSupportFragmentManager().popBackStack(getSupportFragmentManager().getBackStackEntryAt(0).getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      } 

如何只彈出最後一個事務/條目在後臺?

碼的我是多麼添加到堆棧:

 fragmentManager.beginTransaction(). 
       setCustomAnimations(R.anim.slide_in_left, R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_out_right). 
       replace(R.id.content_frame, pageFragment, currentItem). 
       addToBackStack(currentItem). 
       commit(); 
+1

發佈您的片段添加代碼plz。 –

回答

1

彈出最後一個交易條目:

int last = getActivity().getSupportFragmentManager().getBackStackEntryCount() - 1 
FragmentManager.BackStackEntry entry = getSupportFragmentManager().getBackStackEntryAt(last); 
String tag = entry.getName(); 
Fragment fragment = getSupportFragmentManager().findFragmentByTag("last"); //get the last fragment 

你也需要添加標籤事務期間..

fragmentTransaction.addToBackStack("last"); 

您也可以使用popBackStackImmediate彈出最後一個片段:

getSupportFragmentManager().popBackStackImmediate(getSupportFragmentManager().getBackStackEntryAt(last), FragmentManager.POP_BACK_STACK_INCLUSIVE); 

要使用標籤使用從堆棧中彈出片段:

getSupportFragmentManager().popBackStack ("last", FragmentManager.POP_BACK_STACK_INCLUSIVE); 
+0

感謝您的重播...最後一行getSupportFragmentManager()。popBackStackImmediate(getSupportFragmentManager()。getBackStackEntryAt(last),FragmentManager.POP_BACK_STACK_INCLUSIVE);是int變量,而不是字符串「最後」...所以你能告訴如何彈出標籤爲「last」的backstack – kumar

+0

@kumar我編輯了答案 – rafsanahmad007

2

對於這個錯誤:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

,而不是commit(),使用commitAllowingStateLoss()和問題將不復存在。然後使用你想要的方法。

+0

我將使用commitAllowingStateLoss(),我會彈出最後一個條目。getSupportFragmentManager()popBackStackImmediate();所以我會不會得到IllegalStateException之後做這個? – kumar

+0

不,你不會。讓我知道結果。 –