碎片

个人笔记

  1. 必须嵌套在活动Activity中使用
  2. 同样有自己的生命周期
  3. 相当于迷你型活动
  4. 让程序更加合理和充分地利用大屏幕空间

简单用法:

  • 新建fragment.xml文件+新建一个类extends自Fragment类或其子类
  • 有两个不同包下的Fragment可以选择使用,一个是系统内置的android.app.Fragment,一个是support-v4库的,建议使用后者
  • 在新建类中重写一下方法
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
							View view=inflater.inflate(R.layout.fagment.xml,container,false);//加载碎片布局文件
}

在acticity_main.xml中添加< fragment/>控件,并通过android:name属性指明要添加的碎片的类名.

动态添加碎片(程序运行时动态地添加碎片)

在MainActivity中添加如下方法

private void replaceFragment(Fragment fragment){
		FragmentManager fragmentManager=getSupportFragmentManager();
		FragmentTransaction transaction=fragmentManager.beginTransaction();
		transaction.replace(R.id.right_layout,fragment);//用fragment替换R.id.right_layout
		transaction.commit();
}

在碎片中添加模拟栈返回

private void replaceFragment(Fragment fragment){
		FragmentManager fragmentManager=getSupportFragmentManager();
		FragmentTransaction transaction=fragmentManager.beginTransaction();
		transaction.replace(R.id.right_layout,fragment);//用fragment替换R.id.right_layout
		transaction.addToBackStack();//多添加了这行
		transaction.commit();
}

碎片和活动之间进行通信

FragmentManager提供了finFragmentById()的方法获取碎片
如下
RightFragment 是自己定义的Fragment类,R.id.right_fragment是<fragment/ >的id属性

RightFragment rightFragment=(RightFragment)getFragmentManager().findFragmentById(R.id.right_fragment);

碎片的生命周期

  1. 碎片总是依附于活动而存在的。
  2. 活动中有的回调函数,碎片中也几乎都有

以下是碎片附加的一些回调方法

  1. onAttach()当碎片和活动建立关联的时候调用
  2. onCreateView()为碎片创建视图(加载布局)时调用
  3. onActivityCreated()确保与碎片相关联的活动一定已经创建完毕的时候调用
  4. onDestroyView()移除碎片相关联的视图时
  5. onDetach()碎片和活动解除关联

在这里插入图片描述

动态加载布局的技巧

使用限定符: 1.small 2.normal 3.large 4.xlarge
layout/activity_main.xml单页模式(一个碎片)
layout-large/activity_main.xml双页模式(包含了两个碎片)
那些屏幕被认为是large的设备就睡自动加载layout-large/activity_main.xml,较小的则自动加载layout/activity_main.xml

使用最小宽度限定符(Smallest-width Qualifier)
layout-sw600dp文件夹下新建acticity_mainxml文件,表示当程序运行在屏幕大于600dp的设备上时调用该xml布局,小于的话则调用默认的layout/activity_main.xml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值