Fragment的使用(切换)

来源:互联网 发布:2008年科比总决赛数据 编辑:程序博客网 时间:2024/06/05 15:47

安卓开发中,几乎所有APP模块间的切换都是用Fragment来实现。

本文不论述Fragment的基础理论知识,直接概述Fragment的使用方法(仅切换)。

1、replace(替换)

public static void replaceFragment(Activity activity,Fragment fragment) {
android.app.FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
    transaction.replace(R.id.main_frame_layout,fragment);
  transaction.commit();    
}

注意:

getSupportFragmentManager()这个方法只有在FragmentActivity中才可以使用(v-4包);

如果你的Activity只继承Activity ( app包),使用getFragmentManager();

2、show和hide(显示和隐藏)

private static Fragment[] fragments = new Fragment[2];

public static void showAndHideFragment(Activity activity,String fragmentName) {
int type = 0;
if(fragmentName.equals("HOME")){
type = 0;
}
if(fragmentName.equals("SHOP")){
type = 1;
}
//如果被添加的Fragment就是已经显示的Fragment,就不执行操作
        if(lastIndex == type){
            return;
        }
        android.app.FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
        //如果容器中有别的Fragment,就隐藏之前的Fragment
        if(lastIndex != -1){
            //隐藏之前的Fragment
        transaction.hide(fragments[lastIndex]);
        }
        //说明当前要添加的Fragment是第一次添加,创建新的Fragment对象
        if(fragments[type] == null){
            switch (type){
                case 0:
                    fragments[0] = new HomeFragment();
                    break;
                case 1:
                    fragments[1] = new ShopFragment();
                    break;         
            }
            transaction.add(R.id.main_frame_layout,fragments[type]);
        }else{  //说明Fragment已经创建过,并且被隐藏起来了
            //显示隐藏的Fragment
        transaction.show(fragments[type]);
        }
        transaction.commit();
        lastIndex = type;
}

上述两个方法进行了简单的封装,可以拿过去直接用。

3、两者之间的区别

用add方式实现fragment的效果就是:切换fragment时不会重新创建,是什么样子切换回来还是什么样子;
用replace的效果就是:切换fragment时每次都会重新创建初始化。

0 0
原创粉丝点击