专栏首页分享达人秀Fragment使用起来非常简单

Fragment使用起来非常简单

Fragment创建完成后并不能单独使用,还需要将Fragment加载到Activity中,在Activity中添加Fragment的方式有两种:静态加载和动态加载,接下来分别进行学习。

一、静态加载

静态加载Fragment非常简单,直接把Fragment当成普通的控件写在Activity的布局文件中。使用<fragment></fragment>标签,该标签与其他控件的标签类似,但必须要指定android:name属性或class属性,其属性值为Fragment的全路径名称。

接下来在上一期的案例基础上继续学习,首先修改activity_main.xml文件,修改后的代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">    <fragment        android:id="@+id/fragment_one"        android:name="com.jinyu.cqkxzsxy.android.fragmentsample.FirstFragment"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

当然,也可以这样使用:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">    <fragment        android:id="@+id/fragment_one"        class="com.jinyu.cqkxzsxy.android.fragmentsample.FirstFragment"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

上面两种方法选择其中一种即可,然后在Activity在onCreate( )方法中调用setContentView()加载布局文件即可。默认已经加载默认已经加载activity_main布局,这里就不做修改。

这样我们的第一个Fragment示例程序就已经完成了。直接运行程序,可以看到下图所示界面:

二、动态加载

已经学会了在布局文件中添加Fragment的方法,非常简单,但是有一个缺点,那就是一旦添加就不能在运行时将其删除。所以我们还可以通过动态加载的方式来完成,这种方式是在运行时添加,相对来说比较灵活。

首先Activity需要有一个ViewGroup容器存放Fragment,一般使用FrameLayout。

继续在Activity对应的activity_main布局文件中加入FrameLayout,再次修改后的代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical">    <FrameLayout        android:id="@+id/fragment_container"        android:layout_width="match_parent"        android:layout_height="wrap_content"/></LinearLayout>

然后在Activity中,通过代码将Fragment添加进Activity中。动态添加Fragment主要分为4步:

  1. 获取到FragmentManager对象,在V4包中通过getSupportFragmentManager方法获取,在系统中原生的Fragment是通过getFragmentManager获得的。
  2. 开启一个事务,通过调用beginTransaction方法开启。
  3. 向容器内加入Fragment,一般使用add或者replace方法实现,需要传入容器的id和Fragment的实例。
  4. 提交事务,调用commit方法提交。

接下来修改MainActivity的代码,如下所示:

package com.jinyu.cqkxzsxy.android.fragmentsample;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 1. 获取到FragmentManager对象        FragmentManager fragmentManager = getFragmentManager();        // 2. 开启一个事务        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();        // 3. 向容器内加入Fragment        FirstFragment  firstFragment = new FirstFragment ();        fragmentTransaction.add(R.id.fragment_container, firstFragment);        // 4. 提交事务        fragmentTransaction.commit();    }}

以上几步是不是也是非常简单的,如果对FragmentManager和FragmentTransaction对象不理解没关系,这里先记住这4步即可,后续会专门来学习这2个类的使用。

这样就完成了在Activity中动态加载Fragment的功能,重新运行程序,可以看到和上面静态添加Fragment相同的界面。

至此,我们已经学习了Fragment的创建以及两种加载方式,你都掌握了吗?下一期来更加详细的学习Fragment,敬请期待。

写在最后

今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

如果该系列分享对你有帮助,就动动手指关注、点赞、留言吧,你的互动就是对我最大的鼓励!

此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

本文分享自微信公众号 - 分享达人秀(ShareExpert),作者:鑫鱻

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • AnalogClock、DigitalClock和TextClock时钟组件

    在前面一期,我们学习了DatePicker和TimePicker,在实际开发中其不能完全满足我们对时间和日期的处理。 如果只是想要显示时间,而不...

    分享达人秀
  • Activity数据传递

    在Android开发中,经常要在Activity之间传递数据。前面也学习了Activity和Intent相关基础,接下来一起来学习Activity的数据...

    分享达人秀
  • 两种对齐方式,layout_gravity和gravity大不同

    上一期我们一起学习了LinearLayout线性布局的方向、填充模型和权重,本期来一起学习LinearLayout线性布局的对齐。 一、LinearLay...

    分享达人秀
  • android学习---下拉刷新组建

    /** * The SwipeRefreshLayout should be used whenever the user * can refresh t...

    yuanyuan
  • [Android进阶]OFO首页实现小窥

    最近阅读量凄凄惨惨,难以为继,孤倍感无力,遂决定着眼于炫酷,造一些博眼球的东西以引流,比如说实现XXX页面效果,仿XXX页面效果等,各位看官如若觉得不错,还请动...

    小海编码日记
  • Android实现QQ侧滑菜单效果

    7.在手指抬起的时候,判定一下手指移动的距离,如果移动的距离大于菜单页面宽度的一半,那就让菜单弹出,否则就让菜单回到默认的位置

    砸漏
  • Android实现键盘弹出界面上移的实现思路

    基本就是结合layout中ScrollView视图和AndroidManifest.xml中activity中的android:windowSoftInputM...

    砸漏
  • Android实现今日头条订阅频道效果

    砸漏
  • Android自定义控件单位尺寸实现代码

    1.一般在PC上会使用px(像素)和pt(磅)作为单位,但是在手机上由于不断地会更新手机屏幕的分辨率,因此使用这两个单位不再那么合适。可能在一部低分辨率手机上,...

    砸漏
  • Android项目实战(二十):浅谈ListView悬浮头部展现效果

    听着music睡

扫码关注云+社区

领取腾讯云代金券