2014-05-19 2 views
5

조각 조각 중간 조각을 제거하고 싶습니다. 즉, 조각 A, B, C, D와 스택이 있습니다.이 경우 D를 제거하지 않고 B 또는 C를 제거하려고합니다.FragmentStack에서 중간 조각 제거

그렇게 할 방법이 있습니까? 왜냐하면 내가 D를 제거하고 B 또는 C를 제거한 후에 다시 추가했기 때문에 뷰를 생성하고 모든 세부 사항을 다시 추가하는 데 시간이 걸리기 때문입니다.

+0

? 우리가 더 잘 당신을 도울 수 있도록 일한 코드 조각을 넣으십시오. –

+0

@ 오누라. 죄송합니다. 코드를 작성하지 않으 셨습니다. 나는 단편 절개 방법을 "추가", "숨기기"및 "제거"했습니다. 재 경기에 감사드립니다! – AJit

답변

3

고유 태그가있는 각 조각으로 조각을 호출하는 동안 태그를 사용하십시오. 그런 다음이 태그를 사용하여 단편 스택에서 단편을 제거하십시오. 이 같은 조각 사이

스위치 :

public void switchContent(final Fragment fragment, final String TAG) { 
     CgUtils.showLog(TAG, "in switchcontent with fragment passed " + fragment); 
     mContentFragment = fragment; 
     Handler h = new Handler(); 
     h.postDelayed(new Runnable() { 
      public void run() { 
       getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment, TAG) 
         .commitAllowingStateLoss(); 
       fragment.setRetainInstance(true); 
       getSlidingMenu().showContent(); 
       // .commit(); 
      } 
     }, 50); 
    } 

예컨대 :

지금까지 한 일을
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.remove(fragmentManager.findFragmentByTag(tag)).commit(); 
+0

내가 생각했던 것과는 완전히 다른 점이 있지만, 실제 문제는 사용자가 다음 조각을 선택한 후 백 스택을 처리해야한다는 것입니다. BTW @ user2564055 빠른 재생 주셔서 감사합니다 :). – AJit

+0

.remove가 작동 중입니다. 스택 사이에 조각을 제거하지만 여전히 BackStackEntry가 있으므로 빈 조각으로 영향을 줄 수 있습니다. 프래그먼트를 추가 할 때 항상 백 스택에 추가해야합니다. – AJit