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
- Fragment实现Tabhost效果(未完)
- 使用Fragment实现tabhost效果
- 使用Fragment实现tabhost效果
- 使用Fragment实现tabhost效果
- Fragment实现tabhost的效果
- 使用Fragment实现tabhost效果
- 用FragmentActivity实现点击跳转Fragment效果(未完)
- Android使用Fragment实现TabHost效果
- 用Fragment实现tabhost的切换效果
- Fragment详细解说二(android项目剖解之ViewPager+Fragment 实现tabhost效果 )
- android项目剖解之ViewPager+Fragment 实现tabhost效果
- 使用Fragment实现类似TabHost标签栏的效果
- 利用fragmentManager实现tabhost效果同时保存fragment中数据
- ViewPager+Fragment实现TabHost
- ViewPage+Fragment+indicator+Tabhost效果
- ViewPager实现TabHost 效果
- FragMent生命周期(TabHost)
- Android之Fragment实现TabHost
- OpenCV3.0.0 + VS2013 + Win8x64配置
- 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解
- 网站变灰
- 解决WEB集群session同步的方案,Redis内存缓存
- WP & Win10开发:实现ListView下拉加载的两种方法
- Fragment实现Tabhost效果(未完)
- iOS category
- Python2.x urllib2
- 14 个 Linux grep 命令的例子
- 音频文件播放之音量控制【海思平台】
- 页面弹层置灰 js
- 黑马程序员---------------------java基础--------------------网络编程
- fatal:pathspec did not match any file
- 117. Populating Next Right Pointers in Each Node II