2013-06-27 85 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 

}}