Fragment切换与Fragment间传值

来源:互联网 发布:手机直播源码教程 编辑:程序博客网 时间:2024/05/21 08:55

关于Fragment的使用本篇不做说明。

一、Fragment切换

关于Fragment切换有两种方式,一种是replace另一种是add。

通常replace是直接替换当前的Fragment,而add是不断进行添加,一般我个人写的时候经常将add方式与show()和hide()两个方法一起使用,这样可以做到一些优化:

replace方式:

  getSupportFragmentManager().beginTransaction().replace(R.id.fl, fragments.get(oneOrTwo)).commit();

add方式:

 /**     * Add方式添加     *     * @param oneOrTwo     */    private void fragmentAdd(int oneOrTwo) {        FragmentManager supportFragmentManager = getSupportFragmentManager();        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();        if (supportFragmentManager.findFragmentByTag(oneOrTwo + "") == null) {            ft.add(R.id.fl,fragments.get(oneOrTwo), oneOrTwo + "").commit();        } else {            Fragment currFragment = supportFragmentManager.findFragmentByTag(oneOrTwo + "");            Fragment lastFragment = supportFragmentManager.findFragmentByTag(lastFragmentPosition + "");            ft.show(currFragment);            ft.hide(lastFragment);            ft.commit();        }        lastFragmentPosition = oneOrTwo;    }

二、Fragment间传值

在此最关键的方法就是onHiddenChanged() ,Fragment的隐藏与显示都会在此方法中进行。

关于Fragment传参有两种,一种是使用setArguments一种是直接在Fragment中写setter与getter方法。若使用的是add、show、hide方式添加,则不能用setArguments,当Fragment是隐藏状态是使用这个方法会报一个异常IllegalStateException。

0 0
原创粉丝点击