安卓开发中Fragment最常用的地方应该就是首页tab的切换了吧,下面上代码
//获取FragmentTransaction
mTransaction = mFragmentManager.beginTransaction();
//先把所有的Fragment隐藏
hideFragments(mTransaction);
if (mHomeFragment == null) {
mHomeFragment = new StarFragment();
mTransaction.add(R.id.main_fragment_container, mHomeFragment);
} else {
mTransaction.show(mHomeFragment);
}
mTransaction.commit();
第一次切换的时候如果Fragment没有创建过就先创建然后再显示,如果已经创建过了就直接调用FragmentTransaction的show方法,此时如果有网络数据刷新时就可以用到onHiddenChanged方法了。
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if(!hidden) {
//从tab切出来
refreshHomeData();
}
}
如果FragmentTransaction调用了hidden方法隐藏该Fragment,那么该Fragment的onHiddenChanged回调的hidden为false,反之亦然。