fragment使用add方法进行切换

使用add与hide切换fragment

首先,在activity中添加方法(参数fragment是将要切换的fragment,变量mcContent是用来区分当前fragment和将要切换的fragment的)

public void switchFm(BaseFragment fragment) {
    if (fragment != mContent) {
        FragmentTransaction ft = fm.beginTransaction();
        if (fragment.isAdded()) {
            ft.hide(mContent).show(fragment).commit();
        } else {
            if (mContent == null) {
                ft.add(R.id.fl_content, fragment).commit();
            } else {
                ft.hide(mContent).add(R.id.fl_content, fragment).commit();
            }
        }
        mContent = fragment;
    }
}

在activity中调用:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fm = getSupportFragmentManager();
    RadioGroup rgHelloworld = (RadioGroup) findViewById(R.id.rg_helloworld);
    rgHelloworld.setOnCheckedChangeListener(this);
    rgHelloworld.check(R.id.hello);
}

切换方法(实现RadioGroup的OnCheckedChangeListener监听):

@Override
public void onCheckedChanged(RadioGroup radioGroup, int checkedID) {
    switch (checkedID) {
        case R.id.hello:
            switchFm(new HelloFragment());
            break;
        case R.id.world:
            switchFm(new WorldFragment());
            break;
    }
}

由此就可以自如的切换fragment

附xml文件:

       




    

        

            
        
    

    

        

            

            

        

    


附效果图:


fragment使用add方法进行切换_第1张图片
1484642160(1).png
fragment使用add方法进行切换_第2张图片
1484642183(1).png

你可能感兴趣的:(fragment使用add方法进行切换)