android 多个Fragment切换时的注意事项
16lz
2021-01-26
android 中多个Fragment进行切换时 ,如图 tab 切换 导航栏。
FragmentManager 获取到的FragmentTransaction对象 不能执行多次commit() 否则会报异常 。可以通过 获取不同的事务对象 进行事务的提交。主要代码:
FragmentTransaction ft;FragmentManager fm; //Fragment 对象FragPrice fragPrice; FragMsg fragMsg;FragSetting fragSetting; @Overridepublic void onClick(View v) {fm = getSupportFragmentManager();ft = fm.beginTransaction();switch (v.getId()) {case R.id.barbottom_btn_left: // 价格表fragPrice = new FragPrice();ft.replace(R.id.fl_replace, fragPrice);// 替换当前显示的页面 ft.addToBackStack(null);//添加此方法后 按返回键 会返回上次操作的fragment界面,如果多个fragment 切换后需要灵活运用添加 ft.commit(); case R.id.barbottom_btn_center: // 消息列表 <pre name="code" class="java"> fragMsg =new FragMsg();ft.replace(R.id.fl_replace, fragMsg);// 替换当前显示的页面
ft.commit();// 提交
break;
case R.id.barbottom_btn_right: // 设置
fragSetting=new FragSetting();ft.replace(R.id.fl_replace, fragSetting);// 替换当前显示的页面
ft.commit();// 提交
break;
}
关于ft.addToBackStack(null),可以参考一下: http://blog.csdn.net/jwzhangjie/article/details/27326039 。还有就是在fragment中进行数据的更新 :例如 图片更新 ,消息记录更新等 可以在Activity 中发送广播 fragment中接收广播 进行处理。 直接更新是不会有效果的 我之前写过一篇 文章 可供参考: http://blog.csdn.net/yangbo437993234/article/details/36503643
更多相关文章
- Android(安卓)Studio 3.2 都有哪些更新?这些关键点不要错过
- Android中TabLayout切换选项背景和修改字体大小
- Airplane mode的三种切换方式
- 【持续更新】Android(安卓)源码下载地点
- 深入探究Android定位(一)
- android两屏幕互相滑动
- Android自定义控件2:自定义带下划线的文本或按钮、组合使用可切换
- android设置屏幕方向与自动感应切换
- ActionBar简单使用介绍和Tab切换的应用