Android中Fragment的使用总结示例
来源:互联网 发布:金元证券交易软件下载 编辑:程序博客网 时间:2024/06/05 04:40
private void init() { fragmentManager = getSupportFragmentManager(); fragmentA = new FragmentA(); fragmentB = new FragmentB(); fragmentC = new FragmentC(); // TODO: 有两种方式 1,依次add,控制hide和show,不会重新创建一个fragment // TODO: 2, 每次replace,调用一次会重新创建一个fragment // 开启事务 并提交(每次均返回一个事物对象) fragmentManager.beginTransaction() .add(R.id.activity_layout, fragmentA) .commit(); //(系统自带的 不好用,每一个互相叠加)把 事物添加到 回退栈 //transaction.addToBackStack("A"); addToBackStack(fragmentA); } public void click(View v) { FragmentTransaction transaction = fragmentManager.beginTransaction(); switch (v.getId()) { case R.id.second_btn1: if (fragmentA.isVisible()) { return; } else { if (!fragmentA.isAdded()) { transaction.add(R.id.activity_layout, fragmentA); } transaction.show(fragmentA).hide(fragmentB).hide(fragmentC); } //(系统自带的 不好用)把 事物添加到 回退栈 //transaction.addToBackStack("A"); addToBackStack(fragmentA); break; case R.id.second_btn2: if (fragmentB.isVisible()) { return; } else { if (!fragmentB.isAdded()) { transaction.add(R.id.activity_layout, fragmentB); } transaction.show(fragmentB).hide(fragmentA).hide(fragmentC); } //(系统自带的 不好用)把 事物添加到 回退栈// transaction.addToBackStack("B"); addToBackStack(fragmentB); break; case R.id.second_btn3: if (fragmentC.isVisible()) { return; } else { if (!fragmentC.isAdded()) { transaction.add(R.id.activity_layout, fragmentC); } transaction.show(fragmentC).hide(fragmentA).hide(fragmentB); } //(系统自带的 不好用)把 事物添加到 回退栈// transaction.addToBackStack("B"); addToBackStack(fragmentC); break; } transaction.commit(); } @Override public void onBackPressed() { //super.onBackPressed(); if (listFragment.size() > 1) { int size = listFragment.size(); //移除最后一个,显示倒数第2个 fragment FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.remove(listFragment.get(size - 1)) .show(listFragment.get(size - 2)); transaction.commit(); //移除最后一个 list元素 listFragment.remove(size - 1); } else { finish(); } } private ArrayList<Fragment> listFragment = new ArrayList<>(); private void addToBackStack(Fragment fragment) { if (listFragment.contains(fragment)) { //把当前 fragment放在 list集合末尾 listFragment.remove(fragment); listFragment.add(fragment); } else { listFragment.add(fragment); } }
0 0
- Android中Fragment的使用总结示例
- Android中Fragment的总结
- Android的Fragment使用总结
- Android的Fragment使用总结
- Android中Fragment的使用
- Android中Fragment的使用
- Android中Fragment的使用
- Android中Fragment的使用
- Android中Fragment的使用
- Android中Fragment的使用
- Android Fragment使用总结
- Android Fragment使用总结
- Android基础总结八:Fragment的使用
- fragment使用的简单示例
- 【Android】Android中fragment的基本使用
- Android中关于Fragment的使用和Fragment的生命周期
- Android中使用Fragment
- fragment的使用总结
- C++ Primer_4th学习笔记(6)- string 对象的定义和初始化
- Spark常用函数讲解之键值RDD转换
- 设计模式---抽象工厂模式(C++实现)
- 语音学习笔记9------Matlab R2015a实现BP神经网络的嗓音识别
- 关于ConcurrentHashMap作缓存
- Android中Fragment的使用总结示例
- HDU 4908 BestCoder Sequence (哈希)
- 从梯度下降到拟牛顿法:详解训练神经网络的五大学习算法
- Collections工具类
- GPLT L2-005. 集合相似度【set集合】
- Java相关知识普及
- TCP/IP系列——长连接与短连接的区别
- Bootstrap 环境安装
- 安卓开发之——AndroidSDK环境配置