Fragment 简单使用
在activity 的布局文件中添加fragment <FrameLayout
android:id="@+id/fl_main_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<fragment
android:id="@+id/nologin_left_fragment"
android:name="com.hanya.financing.main.home.HomeNoLoginFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/nologin_right_fragment"
android:name="com.hanya.financing.main.active.ActivityCenterFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
fragmentManager = getSupportFragmentManager();
//实例化三个页面 已经不用添加 ,已经在布局文件中添加
homeNoLoginFragment = (HomeNoLoginFragment) fragmentManager.findFragmentById(R.id.nologin_left_fragment);
gameFrament = (ActivityCenterFragment) fragmentManager.findFragmentById(R.id.nologin_right_fragment);
fragmentTransaction = fragmentManager.beginTransaction();
//设置首页显示
fragmentTransaction.show(homeNoLoginFragment).hide(gameFrament).commit();
Fragment 生命周期
onAttach
//当创建出一个fragment的时候要附加到activity上
oncreate
//fragment被创建
oncreateview //fragment要显示的view给返回回来。
onActivityCreated、//activity创建完后才可以加到activity上
onstart
//用户可见
onresume
//获取焦点
onpause
//失去焦点
onstop
//用户不可见
ondestoryView
//销毁view
ondestoty
//fragment销毁
onDetach
//取消挂载的fragment
一般情况下用
oncreateview
ondestoryview
--------------------------------------------------
当前fragment对 用户可见时 可以执行一些逻辑。
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); }
Fragment 之间切换时
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//相当于Fragment的onResume
} else {
//相当于Fragment的onPause
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
if (currentNologinEntity == null) {
refresh(false);
}
}
}
fragment 之间通信?
getActivity();
//先后去fragment挂载的activity
FragmentManager fm = getActivity().getFragmentManager()
//通过activity 获得fragment管理器。
Fragment f = fm.findFragmentById();
//获取到目标fragment
f.update()
//通过fragment 对象更新方法(根据业务自定义)即可
动态创建fragment
MYFragment f = new MyFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace
ft.hide //show
commit