Fragment实现Tabhost效果(未完)

来源:互联网 发布:数据质量评估 编辑:程序博客网 时间:2024/05/16 08:59

用Fragment的方法来实现传统的底部tabhost效果。
步骤:
1. 创建tabhost线性布局文件,以及每个fragment的布局文件;对每个tabitem都新建一个Fragment类,在类中重写onCreateView()方法,加载各fragment布局文件。
2. 在MainActivity中实例化各Fragment,并创建FragmentManager和FragmentTransaction的实例进行业务操作。大致如下:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
……
transaction.add(Id, Fragment)
……
transaction.commit();

部分方法:
transaction.add(Id, Fragment)
transaction.hide(Fragment)
transaction.show(Fragment)

下面是代码展示——
MainActivity.java

public class MainActivity extends FragmentActivity implements OnClickListener {    private LinearLayout mTabMap;    private LinearLayout mTabSpots;    private LinearLayout mTabFriends;    private LinearLayout mTabMore;    private Fragment mTab01;    private Fragment mTab02;    private Fragment mTab03;    private Fragment mTab04;    private FragmentManager fm;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        initView();        initEvent();        setSelect(0);    }    private void initView() {        mTabMap = (LinearLayout) findViewById(R.id.id_tab_map);        mTabSpots = (LinearLayout) findViewById(R.id.id_tab_spots);        mTabFriends = (LinearLayout) findViewById(R.id.id_tab_friends);        mTabMore = (LinearLayout) findViewById(R.id.id_tab_more);    }    private void initEvent() {        mTabMap.setOnClickListener(this);        mTabSpots.setOnClickListener(this);        mTabFriends.setOnClickListener(this);        mTabMore.setOnClickListener(this);    }    private void setSelect(int i) {        fm = getSupportFragmentManager();        FragmentTransaction transaction = fm.beginTransaction();        hideFragment(transaction); //加载之前,先隐藏当前布局        switch (i) {        case 0:            if(mTab01 == null) {  //如果第一次加载                mTab01 = new MapFragment(); //初始化                transaction.add(R.id.id_fragment_content, mTab01);  //使用transaction.add()方法显示当前fragment            } else {  //如果已经加载过                transaction.show(mTab01); //将加载过的页面显示            }            break;        case 1:            if(mTab02 == null) {                mTab02 = new SpotsFragment();                transaction.add(R.id.id_fragment_content, mTab02);            } else {                transaction.show(mTab02);            }            break;        case 2:            if(mTab03 == null) {                mTab03 = new FriendsFragment();                transaction.add(R.id.id_fragment_content, mTab03);            } else {                transaction.show(mTab03);            }            break;        case 3:            if(mTab04 == null) {                mTab04 = new MoreFragment();                transaction.add(R.id.id_fragment_content, mTab04);            } else {                transaction.show(mTab04);            }            break;        }        transaction.commit();  //最后不要忘记提交事务    }    private void hideFragment(FragmentTransaction transaction) {        if(mTab01 != null) {            transaction.hide(mTab01);        }        if(mTab02 != null) {            transaction.hide(mTab02);        }        if(mTab03 != null) {            transaction.hide(mTab03);        }        if(mTab04 != null) {            transaction.hide(mTab04);        }    }    @Override    public void onClick(View v) {        switch (v.getId()) {        case R.id.id_tab_map:            setSelect(0);            break;        case R.id.id_tab_spots:            setSelect(1);            break;        case R.id.id_tab_friends:            setSelect(2);            break;        case R.id.id_tab_more:            setSelect(3);            break;        }    }}
0 0
原创粉丝点击