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
原创粉丝点击