Android中Fragment的使用总结示例

    xiaoxiao2021-03-25  73

    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); } }
    转载请注明原文地址: https://ju.6miu.com/read-36656.html

    最新回复(0)