2

을 일으키지 않고 가기 backstack을 저런 애하고 난 솔루션으로 아래의 코드를 가지고 statckoverflow를 검색.내 코드에서 <code>java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState</code></p> <p><br>을 얻고 있었다 IllegalStateException이

이제 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); 

태그 사용을 사용하여 가기 backstack에서 조각을 팝업 :

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

재생에 감사 ... 마지막 줄 getSupportFragmentManager(). popBackStackImmediate (getSupportFragmentManager(). getBackStackEntryAt (last), FragmentManager.POP_BACK_STACK_INCLUSIVE); int 변수이며 "last"문자열이 아닙니다. 그래서 "back"태그를 사용하여 백 스택을 팝하는 법을 알려주십시오. – kumar

+0

@kumar 대답을 편집했습니다 – rafsanahmad007

2

를이 오류 :

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

대신 commit(), commitAllowingStateLoss()를 사용하고 문제가 사라질 것입니다. 그런 다음 원하는 방법을 사용하십시오.

+0

commitAllowingStateLoss()를 사용하여 마지막 항목을 팝합니다. getSupportFragmentManager(). popBackStackImmediate(); 그래서 soo를 수행 한 후 IllegalStateException을 얻지 못하겠습니까 ?? – kumar

+0

아니요, 그렇지 않습니다. 결과에 대해 알려주세요. –