初探碎片
解决android studio中使用碎片后,平板预览出错问题
预览出错
解决办法:
在左右fragment各加tools:layout="@layout/left_fragment"
问题地址,点进去后记得顶这个问题!
显示正常了:显示
其中,使用碎片的顺序应该是,写的方向则相反:
1
|
fragment->碎片类: 调用该类
碎片类->布局: 加载该布局
|
动态添加碎片
1
|
//新建碎片类实例
|
动态添加碎片实则是在一个容器中(此例为FrameLayout)将一个碎片(实例)替换成另一个碎片(实例)
在碎片中模拟返回栈
在事务(transaction)被commit前,添加transaction.addToBackStack(null)
,按Back键可以返回事务前的状态
从布局文件获取碎片实例,接着就可以调用碎片的方法:
1
|
LeftFragment leftfrag = (LeftFragment) getFragmentManager().findFragmentById(R.id.left_frag);
|
碎片中调用活动的方法:
因为:活动)(1)<–绑定–>布局<–包含–>碎片->对应碎片类->在碎片类里面通过getActivity()获取相关联活动(1)
碎片的生命周期
- 若有在事务提交前 addToBackStack,那么起初的碎片会onPause->onStop->onDestroyView,按Back键会重新加载该碎片 onActivityCreated->onStart->onResume(没有onCreateView,原因是借助addToBackStack使得先前碎片的实例和视图得以保存)
- 反之,在碎片被替换后,onDestroyView->onDestroy->onDetach
preview无法显示
大致意思是,只要你代码写的对,真实运行的是时候就不会出错,忽略这个问题即可。我想会不会和上面的那个问题有关,加上tools:layout="@layout/left_fragment"
果然正确显示出来了
其实,可以推理出,tools:layout="@layout/left_fragment"
不过是用了来自xmlns:tools="http://schemas.android.com/tools"
的工具,你不加,无非无法预览而已,该运行的还是运行起走