重复创建fragment的解决办法
来源:互联网 发布:秦陵 知乎 编辑:程序博客网 时间:2024/06/11 19:01
直接上代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private FrameLayout mFrameLayout; private Button btn_pan; private Button btn_twopan; private Button btn_sanpan; private Button btn_sipan; private List<Fragment> mFragments = new ArrayList<>(); private PanFragment panFragment; private TwoPanFragment twoPanFragment; private SanFragment sanPanFragment; private SiPanFragment siPanFragment; Fragment currentFragment = new Fragment(); private int currentPostion; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); panFragment = new PanFragment(); twoPanFragment = new TwoPanFragment(); sanPanFragment = new SanFragment(); siPanFragment = new SiPanFragment(); mFragments.add(panFragment); mFragments.add(twoPanFragment); mFragments.add(sanPanFragment); mFragments.add(siPanFragment); setLayout(); } private void initListener() { btn_pan.setOnClickListener(this); btn_twopan.setOnClickListener(this); btn_sanpan.setOnClickListener(this); btn_sipan.setOnClickListener(this); } private void initView() { mFrameLayout = (FrameLayout) findViewById(R.id.fl_fragment); btn_pan = (Button) findViewById(R.id.btn_pan); btn_twopan = (Button) findViewById(R.id.btn_twopan); btn_sanpan = (Button) findViewById(R.id.btn_sanpan); btn_sipan = (Button) findViewById(R.id.btn_sipan); }//主要方法 private void setLayout() { FragmentManager manger = getSupportFragmentManager(); FragmentTransaction transaction = manger.beginTransaction(); if (!mFragments.get(currentPostion).isAdded()) { transaction.hide(currentFragment).add(R.id.fl_fragment, mFragments.get(currentPostion)); } else { transaction.hide(currentFragment).show(mFragments.get(currentPostion)); } currentFragment = mFragments.get(currentPostion); transaction.commit(); }// private void setLayout1(Fragment from, Fragment to) { if (from != to) { FragmentManager manger = getSupportFragmentManager(); FragmentTransaction transaction = manger.beginTransaction(); if (!to.isAdded()) { if (from != null) { transaction.hide(from); } if (to != null) { transaction.add(R.id.fl_fragment, to).commit(); } } else { if (from != null) { transaction.hide(from); } if (to != null) { transaction.show(to).commit(); } } } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_pan: currentPostion = 0; break; case R.id.btn_twopan: currentPostion = 1; break; case R.id.btn_sanpan: currentPostion = 2; break; case R.id.btn_sipan: currentPostion = 3; break; } setLayout(); }}结果:
07-11 07:57:56.996 10077-10077/com.jetway.fenping D/SiPanFragment: onCreateView:
07-11 07:57:58.660 10077-10077/com.jetway.fenping D/SanFragment: onCreateView:
07-11 07:57:59.860 10077-10077/com.jetway.fenping D/TwoPanFragment: onCreateView: (日志没有重复创建)
阅读全文
0 0
- 重复创建fragment的解决办法
- android fragment 重复创建的问题
- fragment不重复创建实例
- 完美解决Viewpager+Fragment 重复创建的问题
- 当FragmentTabHost切换Fragment时,重复调用Fragment的onCreatView方法的解决办法
- Fragment重叠的解决办法
- Android 多个Fragment切换时,避免重复创建Fragment。
- 桌面图标重复的解决办法
- 创建网站集采用模板时出现“发现重复名称“项目”。 ”错误的解决办法
- iOS用SegmentController来切换tableView的时候 reloadData会造成数据重复创建 解决办法
- 页面重复提交的解决办法
- vim重复编辑的解决办法
- FragmentTabHost+Fragment+Viewpage遇到的Fragment重复加载问题
- Code Fragment-封装重复代码的代码
- 同一个Fragment重复加载的问题
- Fragment解决重复加载的问题
- Fragment解决重复加载的问题
- fragment的创建和通信
- SQLserver 数据库增删改查练习50例
- yum下载的软件包位置
- python将文件内容按照某列值重新排序
- maven-管理依赖-理论篇
- tensorflow在windows在安装
- 重复创建fragment的解决办法
- 线程池的实现
- XP系统安装SQL Server 2005开发版具体过程与注意问题
- inux系统性能调优第一步——性能分析(vmstat)
- 多态的性质
- 使用vector而不使用二叉树实现Huffman编码
- F
- centos7网络配置 以及修改配置文件无效问题
- nginx禁止直接通过ip进行访问并跳转到自定义500页面