第一行代码笔记1:Fragment

一、在碎片中模拟返回栈

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.right_layout, fragment);
transaction.addToBackStack(null);
transaction.commit();

提交事务之前调用FragmentTransactionaddToBackStack(),它可以接受一个名字用于描述返回栈的状态,一般传入null即可。这样,当你按下Back键,会把替换之前的Fragment显示出来。

二、碎片和活动通信

1、活动中调用碎片:getFragmentManager()findFragmentById()可从布局文件中获取碎片的实例。

2、碎片中调用活动:在碎片中调用getActivity()可得到和当前碎片相关联的activity实例。当碎片中需用Context对象时,也用getActivity(),因为activity本身就是一个Context对象。

3、碎片和碎片怎么通信呢:在碎片获取活动,通过这个活动再去获取另一个碎片。

三、碎片生命周期

1、在碎片中也可通过onSaveInstanceState()来保存数据,因为进入停止状态的碎片有可能被系统回收。保存下来的数据在onCreate()onCreateView()onActivityCreated()三个方法中都能重新获得。

2、通过调用FragmentTransactionremove()replace()将碎片从活动中移除,碎片会进入停滞状态。但有在事务提交之前调用addToBackStack(),这时的碎片也会进入停止状态。

四、动态加载布局的技巧

动态添加碎片当然可以解决这个问题。程序也可根据设备的分辨率或屏幕大小在运行时决定加载哪个布局。

1、使用限定符

layout/acitivty_main中只包含一个碎片,即单页模式;而在layout-large/activity_main布局中包含两个碎片,即双页模式。large就是一个限定符,那些屏幕被认为是large的设备会自动加载layout-large文件夹下的布局,而小屏幕的设备则还是会加载layout文件夹下的布局。常见限定符:


2、用最小限定符

上面用到了large,但是large到底多大呢?这时可以使用最小限定符:允许我们对屏幕宽度指定一个最小值,然后以这个最小值为临界点,屏幕宽度大于这个值的设备就加载一个布局,小于这个宽度的设备就加载另一个布局。示例:在res下新建layout-sw600dp文件夹。当屏幕宽度大于600dp时,会加载此文件夹下的布局。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值