前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fragment使用起来非常简单

Fragment使用起来非常简单

作者头像
分享达人秀
发布2018-03-26 17:32:57
1K0
发布2018-03-26 17:32:57
举报
文章被收录于专栏:分享达人秀分享达人秀
Fragment创建完成后并不能单独使用,还需要将Fragment加载到Activity中,在Activity中添加Fragment的方式有两种:静态加载和动态加载,接下来分别进行学习。

一、静态加载

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

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

代码语言:javascript
复制
<?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>

当然,也可以这样使用:

代码语言:javascript
复制
<?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,再次修改后的代码如下:

代码语言:javascript
复制
<?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的代码,如下所示:

代码语言:javascript
复制
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)——鑫鱻所有,若需转载请联系作者授权,特此声明!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享达人秀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档