2013-06-27 3 views
0
public class MyTabListener <T extends SherlockFragment> implements TabListener{ 

private SherlockFragment mFragment; 
private final SherlockFragmentActivity mActivity; 
private final String mTag; 
private final Class<T> mClass; 

public MyTabListener(SherlockFragmentActivity mActivity, String mTag, Class<T> mClass) { 

    this.mActivity = mActivity; 
    this.mTag = mTag; 
    this.mClass = mClass; 
} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 

    // Check if the fragment is already initialized 
    if (mFragment == null) { 
     // If not, instantiate and add it to the activity 
     mFragment = (SherlockFragment) SherlockFragment.instantiate(
       mActivity, mClass.getName()); 

     ft.replace(android.R.id.content, mFragment, mTag); 
    } else { 
     // If it exists, simply attach it in order to show it 
     ft.show(mFragment); 
    } 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 

    if (mFragment != null) { 
     // Detach the fragment, because another one is being attached 
     ft.hide(mFragment); 
    } 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

}} 

코드가 조각을 숨기지 만 다시는 표시하지 않습니다.Android, 조각 숨기기 및 표시

답변

1

나는 add()replace()를 대체하여 그것을 해결, 그래서 코드는이

public class MyTabListener <T extends SherlockFragment> implements TabListener{ 

private SherlockFragment mFragment; 
private final SherlockFragmentActivity mActivity; 
private final String mTag; 
private final Class<T> mClass; 

public MyTabListener(SherlockFragmentActivity mActivity, String mTag, Class<T> mClass) { 

    this.mActivity = mActivity; 
    this.mTag = mTag; 
    this.mClass = mClass; 
} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 

    // Check if the fragment is already initialized 
    if (mFragment == null) { 
     // If not, instantiate and add it to the activity 
     mFragment = (SherlockFragment) SherlockFragment.instantiate(
       mActivity, mClass.getName()); 

     ft.add(android.R.id.content, mFragment, mTag); 
    } else { 
     // If it exists, simply attach it in order to show it 
     ft.show(mFragment); 
    } 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 

    if (mFragment != null) { 
     // Detach the fragment, because another one is being attached 
     ft.hide(mFragment); 
    } 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    // TODO Auto-generated method stub 

}} 
처럼 보인다