安卓用Fragment+RadioButton组合构成的底部导航栏的实现
来源:互联网 发布:java九九乘法表编程 编辑:程序博客网 时间:2024/06/17 01:14
由于Fragment是3.0后才有的,所以使用时一般还是导入V4的包;直接上demo,代码中做说明:
import java.util.ArrayList;import java.util.List;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentTransaction;import android.view.KeyEvent;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.Toast;/**BaseFragmentActivity类就不贴代码了*/public class MainActivity extends BaseFragmentActivity implements OnCheckedChangeListener { private RadioGroup radiogroup; private int current_Fragment = -1; private List<Fragment> list_fragment; // 最后一次按返回的时间 private long lastExitTime = 0; //定义的三个Fragment private OtherFragment otherf; private MineFragment minef; private MainFragment mainf; //获得布局文件 @Override public int getContentViewId() { // TODO Auto-generated method stub return R.layout.activity_main; } //实例化控件 @Override public void findViews() { // TODO Auto-generated method stub radiogroup = (RadioGroup) findViewById(R.id.radioGroup1); } //监听事件 @Override public void widgetListener() { // TODO Auto-generated method stub radiogroup.setOnCheckedChangeListener(this); } //初始化数据 @Override public void init() { // TODO Auto-generated method stub otherf = new OtherFragment(); mainf = new MainFragment(); minef = new MineFragment(); list_fragment = new ArrayList<Fragment>(); list_fragment.add(mainf); list_fragment.add(otherf); list_fragment.add(minef); //默认选择第0个 switchId(0); } //页面切换 protected void switchId(int position) { // TODO Auto-generated method stub if (current_Fragment == position) { return; } // 获取Fragment的操作对象 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frameLayout1, list_fragment.get(position)); if (current_Fragment != -1) { getSupportFragmentManager().popBackStack(position + "", 0); transaction.addToBackStack(position + ""); // 将上一个Fragment存回栈,生命周期为stop,不销毁 } transaction.commitAllowingStateLoss();// 提交更改 current_Fragment = position; } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO 选择不同的radiobutton时切换不同的页面 switch (checkedId) { case R.id.radio0: switchId(0); break; case R.id.radio1: switchId(1); break; case R.id.radio2: switchId(2); break; } } /** * 再按一次退出 * * 如果不实现这个(这里索性实现的一个再按一次退出的功能,大多应用都会有这种提示吧), * 按返回键的时候,不会直接退出应用,而是切换了多少次button,就要按多少次返回, * 才能退出,如有更好的方法解决这个问题,请大神留言告知。 */ @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { // 判断2次点击事件时间 if ((System.currentTimeMillis() - lastExitTime) > 2000) { Toast.makeText(context, "再按一次退出", Toast.LENGTH_LONG).show(); lastExitTime = System.currentTimeMillis(); } else { finish(); } } return true; } return super.dispatchKeyEvent(event); }}
0 0
- 安卓用Fragment+RadioButton组合构成的底部导航栏的实现
- RadioButton+Fragment实现底部导航栏
- Fragment之底部导航栏的实现
- Fragment底部导航栏的实现
- Fragment实现的底部导航
- 底部导航的RadioButton 方式实现
- 底部导航的RadioButton 方式实现
- Fragment+自定义RadioButton实现底部导航栏,仿QQ
- Fragment 和RadioButton 实现底部导航拦
- Fragment 和RadioButton 实现底部导航拦
- Android底部导航栏—RadioButton+Fragment
- 模仿网易云课堂的底部导航栏切换—RadioButton+Fragment
- Fragment 实现底部导航栏的简单切换
- 使用radiobutton实现底部导航栏
- Fragment底部导航栏实现
- Android 底部导航栏的使用 fragment
- ViewPager+Fragment滑动切换页面(RadioButton底部导航栏)
- RadioButton实现底部菜单导航
- linux chown 和 chgrp 指令
- 数字雨+大数加法+割圆术求π+冒泡排序+快速排序+栈练习+链表练习
- ViewPage无限轮播小点设置
- c++11多线程生产者消费者问题
- php中的trait
- 安卓用Fragment+RadioButton组合构成的底部导航栏的实现
- 关于javaScript Array数组方法的应用
- NYOJ-1188并集与交集,STL的灵活运用!
- day8-23(JDBC)
- 内积和外积
- Visual Studio+QT+OpenCv实现视频拍照保存功能
- Qt主界面和一个新的Dialog的通信(交互)
- 定义Retrofit 网络接口服务的包装类(基础类)
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)