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

不,你不会。让我知道结果。 –