APP导航Fragment与RadioGroup
来源:互联网 发布:淘宝天机平台怎么加入 编辑:程序博客网 时间:2024/06/07 16:45
使用Fragment+RadioGroup生成app导航栏
现在越来越多的app,都已经采用了Fragment进行开发,今天我们就谈一下如何去实现底部导航,点击按钮切换各个模块,如下所示:
先贴出布局文件:
fragment_station.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp"> <RadioGroup android:id="@+id/rg_group" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#F5F5F5" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/id_auto_car" style="@style/BottomTabStyle" android:background="@drawable/selector_radio_checked" android:checked="true" android:text="机动车" android:textColor="@color/btn_text_selector" /> <RadioButton android:id="@+id/id_hc_car" style="@style/BottomTabStyle" android:background="@drawable/selector_radio_checked" android:text="货车" android:textColor="@color/btn_text_selector" /> <RadioButton android:id="@+id/id_ck_car" style="@style/BottomTabStyle" android:layout_height="match_parent" android:background="@drawable/selector_radio_checked" android:text="客车" android:textColor="@color/btn_text_selector" /> <RadioButton android:id="@+id/id_crowd" style="@style/BottomTabStyle" android:layout_height="match_parent" android:background="@drawable/selector_radio_checked" android:text="拥挤度" android:textColor="@color/btn_text_selector" /> <RadioButton android:id="@+id/id_speed" style="@style/BottomTabStyle" android:background="@drawable/selector_radio_checked" android:text="车速" android:textColor="@color/btn_text_selector" /> </RadioGroup> </LinearLayout> <View android:background="@color/gray" android:layout_width="match_parent" android:layout_height="0.5dp"/> <FrameLayout android:id="@+id/id_label_container" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
主要有两种方法实现:
- 使用Fragment,通过replace进行切换,当然这个一般生成的Fragment都会销毁掉,无法保存状态
public class StationFragment extends BaseFragment{ private View view; private RadioGroup rg_group; private AutoCarFragment mAutoCarFragment; private HcCarFragment mHcCarFragment; private KcCarFragment mKcCarFragment; private CrowdFragment mCrowdFragment; private SpeedFragment mSpeedFragment; @Override protected View initView() { view = View.inflate(getActivity(), R.layout.fragment_station, null); setDefaultFragment(); initRadioGroup(); return view; } //设置默认选中机动车 private void setDefaultFragment() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); mAutoCarFragment = new AutoCarFragment(); transaction.replace(R.id.id_label_container, mAutoCarFragment); transaction.commit(); } private void initRadioGroup() { rg_group = (RadioGroup) view.findViewById(R.id.rg_group); rg_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); switch (checkedId) { case R.id.id_auto_car: if (mAutoCarFragment == null) { mAutoCarFragment = new AutoCarFragment(); } transaction.replace(R.id.id_label_container, mAutoCarFragment); break; case R.id.id_hc_car: if (mHcCarFragment == null) { mHcCarFragment = new HcCarFragment(); } transaction.replace(R.id.id_label_container, mHcCarFragment); break; case R.id.id_ck_car: if (mKcCarFragment == null) { mKcCarFragment = new KcCarFragment(); } transaction.replace(R.id.id_label_container, mKcCarFragment); break; case R.id.id_crowd: if (mCrowdFragment == null) { mCrowdFragment = new CrowdFragment(); } transaction.replace(R.id.id_label_container, mCrowdFragment); break; case R.id.id_speed: if (mSpeedFragment == null) { mSpeedFragment = new SpeedFragment(); } transaction.replace(R.id.id_label_container, mSpeedFragment); break; default: break; } transaction.addToBackStack(null); transaction.commit(); } }); }}
- 另外一种方法,我们可以通过使用hide(), show(),继续通过事务来进行管理,
public class MainActivity extends FragmentActivity { private Fragment[] mFragments; private RadioGroup rgGroup; private FragmentManager fragmentManager; private FragmentTransaction fragmentTransaction; private boolean mIsExit = false; public static final int STATIONFRAGMENT = 0; public static final int ROUTELINEERAGMENT = 1; public static final int DISTRICTFRAGMENT = 2; public static final int MAINLINEFRAGMENT = 3; public static final int MINEFRAGMENT = 4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFragments = new Fragment[5]; fragmentManager = getSupportFragmentManager(); mFragments[0] = new StationFragment(); mFragments[1] = new RouteLineFragment(); mFragments[2] = new DistrictFragment(); mFragments[3] = new MainlineFragment(); mFragments[4] = new MineFragment(); fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.container, mFragments[0]); fragmentTransaction.add(R.id.container, mFragments[1]); fragmentTransaction.add(R.id.container, mFragments[2]); fragmentTransaction.add(R.id.container, mFragments[3]); fragmentTransaction.add(R.id.container, mFragments[4]); fragmentTransaction.hide(mFragments[0]).hide(mFragments[1]).hide(mFragments[2]).hide(mFragments[3]).hide(mFragments[4]); fragmentTransaction.show(mFragments[STATIONFRAGMENT]).commit(); setFragmentIndicator(); } @Override protected void onSaveInstanceState(Bundle outState) { } private void setFragmentIndicator() { rgGroup = (RadioGroup) findViewById(R.id.rg_group); rgGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.id_station: setShowFragment(STATIONFRAGMENT); break; case R.id.id_routeline: setShowFragment(ROUTELINEERAGMENT); break; case R.id.id_district: setShowFragment(DISTRICTFRAGMENT); break; case R.id.id_main_line: setShowFragment(MAINLINEFRAGMENT); break; case R.id.id_mine: setShowFragment(MINEFRAGMENT); break; default: break; } } }); } /** * 设置跳转fragment * * @param fragmentnum */ public void setShowFragment(int fragmentnum) { fragmentTransaction = fragmentManager.beginTransaction() .hide(mFragments[0]).hide(mFragments[1]) .hide(mFragments[2]).hide(mFragments[3]).hide(mFragments[4]); fragmentTransaction.show(mFragments[fragmentnum]).commit(); }}
0 0
- APP导航Fragment与RadioGroup
- Fragment + RadioGroup实现底部导航
- RadioGroup与Fragment使用
- App底部导航(Fragment与ActivityGroup)
- 利用RadioGroup + ViewPager + Fragment实现书签导航
- RadioGroup+Fragment实现底部导航栏
- android 创建底部导航栏 (radiogroup+fragment)
- android 底部导航栏 ViewPager+RadioGroup+Fragment
- Fragment与RadioGroup简单运用
- 如何使用viewpager与fragment写一个app导航activity
- android中的ViewPager+Fragment+RadioGroup导航样式的实现
- Android中的RadioGroup+ViewPager+Fragment导航样式实现(续)
- 简单快速实现导航条(Viewpager+Fragment+Radiogroup)
- ViewPager+RadioGroup+Fragment仿微信实现底部导航功能
- ViewPager与RadioGroup制作导航栏
- ViewPager与RadioGroup实现导航切换
- RadioGroup+Fragment
- radioGroup+fragment
- 代码阅读工具学习总结
- VS2013 编译x264
- Linux资源管理之cgroups简介
- SQL优化经验总结34条
- AppStore应用评分
- APP导航Fragment与RadioGroup
- SetTimeOut()的用法
- 深入理解Objective-C:Category
- 深入理解Objective-C:方法缓存
- 第一个java应用程序
- 为WildFly AS 10中的Liferay Portal 6.2配置JOSSO Agent
- locationInView
- 序列化和反序列化
- c++虚函数实现