博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第13天Fragment案例1:底部导航Fragment的hide和show切换(****)
阅读量:3787 次
发布时间:2019-05-22

本文共 2930 字,大约阅读时间需要 9 分钟。

第13天Fragment案例1:底部导航Fragment的hide和show切换(****)

Fragment底部切换

一.效果

在这里插入图片描述

二.思路

四个radiobutton+4个fragent+动态hide和show指定的Fragment

三.代码

(1)创建4个Fragment,此处省略:

(2)activity_main.xml:

(3)MainActivity.java:

public class MainActivity extends AppCompatActivity {
//视图 private MyViewPager vp; private RadioGroup rg; private RadioButton rb1,rb2,rb3,rb4; //数据 private ArrayList
fragmentArrayList=new ArrayList<>(); //记录当前正在显示的Fragment private Fragment currentFragment; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //TODO 去除Bar supportRequestWindowFeature(Window.FEATURE_NO_TITLE);//这句话一定要放到中间 setContentView(R.layout.activity_main); initview();//找组件 initdata();//初始化数据 initlistener();//事件监听 } private void initlistener() {
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override public void onCheckedChanged(RadioGroup group, int checkedId) {
if(rb1.getId()==checkedId){
replaceFragemnt(fragmentArrayList.get(0)); }else if(rb2.getId()==checkedId){
replaceFragemnt(fragmentArrayList.get(1)); }else if(rb3.getId()==checkedId){
replaceFragemnt(fragmentArrayList.get(2)); }else if(rb4.getId()==checkedId){
replaceFragemnt(fragmentArrayList.get(3)); } } }); } private void initdata() {
fragmentArrayList.add(new Fragment1()); fragmentArrayList.add(new Fragment2()); fragmentArrayList.add(new Fragment3()); fragmentArrayList.add(new Fragment4()); } private void initview() {
vp=findViewById(R.id.vp); rg=findViewById(R.id.rg); rb1=findViewById(R.id.rb1); rb2=findViewById(R.id.rb2); rb3=findViewById(R.id.rb3); rb4=findViewById(R.id.rb4); } //TODO 替换Fragment的优化 public void replaceFragemnt(Fragment fragment){
//TODO 1:获得管理者 FragmentManager supportFragmentManager = getSupportFragmentManager(); //TODO 2:开启事务 FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); //TODO 3:替换功能 //隐藏当前正在显示的fragment if(currentFragment!=null){
fragmentTransaction.hide(currentFragment); } //判断要添加的fragment时候被添加过 if(fragment.isAdded()){
//被添加过 //显示传过来 fragmentTransaction.show(fragment); }else{
//没有添加过 //添加传过来的 fragmentTransaction.add(R.id.frame_layout,fragment); } //TODO 4:提交 fragmentTransaction.commit(); //更新当前正在显示的Fragment currentFragment=fragment; }}

转载地址:http://iwktn.baihongyu.com/

你可能感兴趣的文章
输入\数据转换类型\运算符\判断语句
查看>>
多任务(进程线程)
查看>>
超易懂的MySQL缓存机制
查看>>
mysql-Explain
查看>>
mysql-事务
查看>>
C语言排序算法
查看>>
python常用模块整理(超详细)
查看>>
用nginx做反向代理
查看>>
史上最易部署lvs集群-tun模式
查看>>
python进程,线程,协程
查看>>
python网络编程
查看>>
你值得拥有的linux下的网络io 同步/异步/阻塞/非阻塞/BIO/NIO/AIO
查看>>
nginx日志文件配置
查看>>
HTTP over SSL/TLS
查看>>
CentOS安装fortune+cowsay
查看>>
用vue创建一个项目
查看>>
$listeners与.native的使用
查看>>
熟悉Linux 下静态库.a 与.so 库文件的生成与使用——实例
查看>>
算法训练 1的个数(输入正整数n,判断从1到n之中,数字1一共要出现几次。例如1123这个数,则出现了两次1。例如15,那么从1到15之中,一共出现了8个1。)
查看>>
算法训练 素因子去重(给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1)
查看>>