简体   繁体   English

Android,片段隐藏和显示

[英]Android, fragment hide and show

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

}}

That code hides the fragments but never shows them again ... any suggestions ?? 该代码隐藏了片段,但再也不会显示它们了……有任何建议吗?

I solved it by replacing replace() with add() , So the code looks like this 我通过用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

}}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM