2013-11-25 4 views
1

SherlockFragmentActivityViewPager을 생성 중입니다. 내 앱의 구조는 ViewPager -> tab1, tab2, tab3의 세 가지 탭으로 구성됩니다. tab2에서 fragment1-> fragment2-> fragment3과 같은 다른 조각을 표시하려고합니다. ViewPager에서 아래에 표시된대로 FragmentStatePageAdapter을 사용하여 3 개의 탭 (Fragment s)을 추가했습니다.SherlockFragmentActivity에있는 ViewPager의 단일 탭에서 조각 거래

public Fragment getItem(int arg0) { 
    switch (arg0) { 
     case 0: 
      SearchTab searchtab = new Tab1(); 
      return tab1; 
     case 1: 
      BrowseTab browsetab = new Tab2(); 
      return tab2; 
     case 2: 
      SavedItemsTab savedTab = new Tab3(); 
      return Tab3; 
    } 
    return null; 
} 

이제 tab2에서 fragment1에 ListView을 표시했습니다. 사용자가 ListView에서 항목을 클릭하면 다른 ListView과 함께 다른 조각 (조각 2)을 표시하려고합니다. 나는 다음과 같은 설정 단편 트랜잭션에 의해이 일을하고있다 :

Fragment newFragment = new Brxxxx_Fragment(); 

Bundle args = new Bundle(); 
args.putString("Main_Cat_ID", Main_Category_ID_Str); 
args.putString("Main_Cat_Name", Main_Category_Name_Str); 

newFragment.setArguments(args); 

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(R.id.b_p_layoutid, newFragment); 
transaction.addToBackStack(null); 
transaction.commit(); 

을이 단계 후, 나는 또 다른 단편 (fragment2)을 표시 할 수 있어요,하지만 (fragment1) 내 오래된 단편은 여전히 ​​새로운 조각 아래 볼 수 있습니다.

내가 replace()를 사용하지 않고 이전의 조각을 제거하려면

는 어떻게 현재의 단편을 제거하는 방법을 전달받을해야합니까?

답변

1

새로운 조각으로 돌아가거나 배경색을 설정할 필요가없는 경우 다른 조각을 제거 할 수 있습니다. 당신은 ... 레이아웃 ID 'R.id.b_p_layoutid이'당신 '조각'ID 단지의 경우에 'FrameLayout이'이며하지 않는 것이 확인하실 수 있습니다

android:background="?android:attr/colorBackground" 

getActivity().getSupportFragmentManager().beginTransaction().remove('YOUR_FRAGMENT').commit(); 

당신도이 답변을 확인할 수 있습니다

방문 Android replace fragment still displays some of the replaced fragment

방문 Fragment replaced still visible on background

관련 문제