antivity-fragment

fragment中文叫碎片,最初是为了平板空间利用率的问题,手机屏幕很小但平板很大,如果和手机一样显示会浪费很多空间,
比如一个listview在手机上设计要点击后跳转到另一个activity显示里面的内容,而用fragment在平板上
设计则可以在左边放这个列表,右边的空白将点击后的内容显示出来。如今fragment在手机上的应用也渐渐
多了起来,像微信的界面,我们完全可以用fragment去实现。
静态加载fragment
创建两个xml布局,left.xml,right.xml为例,再创建两个class,Left,Right都继承Fragment,android.app.Fragment
为4.0以上版本。重写onCreateView方法,在里面加载布局
public class Left extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedinstaState){
//Right类则加载R.layout.right
View view = inflater.inflate(R.layout.left,container,false);
return view;
}
}
接在在activity_main.xml布局中加入这两个fragment
<fragment
android:id="@+id/left"
android:name="com.hao.fragmentDemo.Left"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
/>
<fragment
android:id="@+id/right"
android:name="com.hao.fragmentDemo.Right"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
/>
这样运行程序就能看见效果了
动态加载fragment
动态加载是我们更常用的,我们改一下activity_main.xml,将第二个fragment外加一个FrameLayout,修改
MainActivity中加载fragment
1.首先创建fragment实例
2.获取fragmentManager
3.开启事务
4.替换fragment
5.提交事务
RightFragment fragment = new RightFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.frame_layout,fragment);
//transaction.addToBackStack(null);//添加到返回栈,即从一个fragment点back会回到上一个fragment
transaction.commit();
addOnBackStackChangeListener()可以监听后台栈的变化
fragmentManager有findFragmentById方法用于获取实例,getActivity()找到与fargment相关联的activity
fragment生命周期,有很多与activity相同,它受控与activity,当activity销毁fragment也会销毁
onAttach:activity和fragment关联时调用
onCreate
onCreateView:fragment加载布局
onActivityCreated:与fragment相关联的activity创建完成调用
onStart
onResume
onPause
onStop
onDestroyView:fragment视图被移除调用
onDestroy
onDetach:fragment与activity解除关联调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值