安卓之路---Fragment笔记

碎片(Fragment)是一种可以嵌入在activity当中的UI片段,它能让程序更加合理和充分的利用大屏幕的空间,因此在平板上应用的很广泛。但是,随着手机应用越来越复杂化,碎片在一些手机应用中也越来越重要,比起单纯的activity来说它更加灵活,也更能适应复杂的UI界面,因此当前无论平板手机它的应用都发非常广泛。


今天,我想总结一些有关碎片(Fragment)的一些知识点,也只是一些简单基础的东西,以供以后的复习查阅。


首先,碎片(Fragment)有两种包来提供,分别是系统内置的android.app.Fragment和support-v4库中的android.support.v4.app.Fragment。系统内置的Fragment最低兼容到3.0版本,而support-v4下的Fragment可以兼容到1.6,因此v4下的版本兼容更多,使用更广。通过目前是用来看,一般都是推荐使用v4下的Fragment.


同时,这两种不同版本的碎片调用方法也不同,主要是在动态调用(也就是在activity中调用Fragment)的方法不同,android.app.Fragment使用 (ListFragment)getFragmentManager().findFragmentById(R.id.userList)  获得  ,继承Activity。android.support.v4.app.Fragment使用 (ListFragment)getSupportFragmentManager().findFragmentById(R.id.userList) 获得 ,需要继承android.support.v4.app.FragmentActivity。简单来说,主要是getFragmentManager()方法和getSupportFragmentManager()两个方法的区别。


在使用Fragment时,我们要重写Fragment的onCreateView()方法,然后在这个方法中通过LayoutInflate的inflate()方法将刚才定义的布局动态加载进来,最后,在活动中添加碎片时不要忘记通过android:name属性来显示指明要添加的碎片类名,同时要将包名也添加上。代码示例如下

public class NewsContentFragment extends Fragment {
    @Nullable
    private View view;
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.news_content_frag,container,false);
        return view;
    }
   
}
android:name="com.example.lenovo.fragmentpracticeagain.NewsTitleFragment"

这里简单说明一下,LayoutInflater表示布局填充器或者加载器,将xml文件转换成view 对象。

viewGroup Container表示当前fragment插入activity的布局视图对象

Bundle savedInstanceState表示存储上一个fragment的信息



碎片的真正强大之处在于它可以在程序运行时动态的添加到活动中。这里我们使用一个具体的方法来说明。如下:

private void replaceFragment(Fragment fragment){
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.right_layout,fragment);
    transaction.commit();
}
首先我们给left_layout碎片中注册了一个点击事件,然后调用replaceFragment()方法动态添加了RightFragment这个碎片,当点击left_layout中的按钮时,就会调用replaceFragment()方法将右侧碎片替换。主要步骤是:

1、创建待添加的碎片实例


2、获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法得到


3、开启一个事务,通过调用beginTransaction()方法开启


4、向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例


5、提交事务,调用commit()方法来完成


好了,这就是碎片(fragment)的一些简单用法,也是基本用法,随着后面学习的深入,我还会继续总结更高级的碎片用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值