android Fragment 使用

一 、Fragment的理解

     Fragment 与activity 相似,但比activity 多出几个方法 ,Fragment的生命周期小于activity

  一个Activity 中可以包含多个Fragment   ,fragment 就像一个个积木,可以组合成一个大的玩具Activity。

 

    

 

activity     oncreate  onstart  onResume  onPause  onstop  ondestroy   onRestart

1. onAttach() 当Fragment和Activity建立关联的时候调用。

2. onCreateView() 为Fragment创建视图(加载布局)时调用。

3. onActivityCreated() 确保与Fragment相关联的Activity一定已经创建完毕的时候调用。

4. onDestroyView() 当与Fragment关联的视图被移除的时候调用。

5. onDetach() 当Fragment和Activity解除关联的时候调用。

二、 Fragment 实际使用例子

  1、 准备 一个xml 文件

首先,创建一个工程,叫做FragmentTest,然后创建一个left_fragment.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">
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="点我"
            />
</LinearLayout>

  

  2、创建一个LeftFragment 类 继承于 Fragment 类 ,包选择 android.app.Fragment 。 V4 下面的Fragment是为了兼容低版本的安卓系统。

    重写  oncreateView() 方法,将 left_fragment.xml 文件添加到布局中

 

1 public class LeftFragment extends Fragment {
2     @Nullable
3     @Override
4     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
5         View view = inflater.inflate(R.layout.left_fragment, container, false);
6         return view;
7     }
8 }

 

  同理,在准备right_fragment 

 

  3、 在Activity 中加入fragment 。同样,首先建立  activity_main.xml 文件

 

 1 ?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6  android:orientation="horizontal">
 7 
 8    <fragment
 9        android:id="@+id/left_fragment"
10        android:name="com.example.fragmenttest.LeftFragment"
11        android:layout_width="0dp"
12        android:layout_weight="1"
13        android:layout_height="match_parent"
14        ></fragment>
15 
16     <FrameLayout
17         android:id="@+id/right_framelayout"
18         android:layout_width="0dp"
19         android:layout_height="match_parent"
20         android:layout_weight="1" >
21         <fragment
22             android:id="@+id/right_fragment"
23             android:name="com.example.fragmenttest.RightFragment"
24             android:layout_width="match_parent"
25             android:layout_height="match_parent"
26             ></fragment>
27     </FrameLayout>
28 
29 </LinearLayout>

 

  4、运行程序 ,主页面加载完 activity_main.xml  会显示如下界面。

 

  

 

三、动态加载替换 fragment

   上面的例子,我们是在activity_main.xml文件中写死了fragment 

  1、还是准备好xml文件 other_fragment.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:background="#CFEDDB"
 5     android:layout_height="match_parent">
 6         <TextView
 7             android:layout_width="wrap_content"
 8             android:layout_height="wrap_content"
 9             android:layout_gravity="center_horizontal"
10             android:textSize="20sp"
11             android:text="我是另一个的fragment"
12             />
13 </LinearLayout>

  2、Othe_Fragment 类 

1 public class LeftFragment extends Fragment {
2     @Nullable
3     @Override
4     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
5         View view = inflater.inflate(R.layout.other_fragment, container, false);
6         return view;
7     }
8 }

 

   3、 MainActivity中给按钮设置点击事件,动态添加Fragment的代码逻辑都放在了点击事件中。

 1  private Button button;
 2     @Override
 3     protected void onCreate(Bundle savedInstanceState) {
 4         super.onCreate(savedInstanceState);
 5         setContentView(R.layout.activity_main);
 6         button = (Button) this.findViewById(R.id.button);
 7         button.setOnClickListener(new View.OnClickListener() {
 8             @Override
 9             public void onClick(View v) {
10                 //总共分5步
11                 //创建fragment对象
12                 OtherFragment otherFragment = new OtherFragment();
13                 //获取FragmentManager管理器
14                 FragmentManager fragmentManager = getFragmentManager();
15                 //开启事务
16                 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
17                 //替换碎片文件
18                 fragmentTransaction.replace(R.id.right_framelayout,otherFragment);
19                 //提交事务
20                 fragmentTransaction.commit();
21             }
22         });
23     }

 

  运行如下

 

 

 

转载于:https://www.cnblogs.com/XingzhiDai/p/5707601.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Fragment 是一种可重用的界面部件,它可以独立于 Activity 运行并与其他 Fragment 组合在一起形成一个完整的界面。Fragment 可以在不同的 Activity 之间共享,这样可以减少代码重复并提高代码复用率。使用 Fragment 需要继承 Fragment 类并重写 onCreateView 方法来创建界面。然后使用 FragmentManager 和 FragmentTransaction 来动态添加、移除和替换 Fragment。 ### 回答2: Android FragmentAndroid 应用中的一种重要的组件,它是一种可以嵌入到 Activity 中的可重用 UI 组件。一个 Activity 可以含多个 Fragment,一个 Fragment 可以被多个 Activity 含。 使用 Fragment,可以实现 UI 动态加载、数据隔离、模块化开发。在实现不同分辨率、屏幕模式的支持时,Fragment 提供了更方便的管理方式。 Fragment 生命周期括以下几个状态: 1. 初始化阶段:调用 onCreate 方法; 2. 可视阶段:调用 onCreateView 方法,创建 Fragment 中的 view; 3. 已添加到 Activity 中:调用 onActivityCreated 方法; 4. 可交互阶段:调用 onStart 方法,Fragment 可以与用户进行交互; 5. 在前台阶段:调用 onResume 方法; 6. 可离屏阶段:调用 onPause 方法; 7. 完全不可见阶段:调用 onStop 方法; 8. 销毁阶段:调用 onDestroyView 方法、onDestroy 方法、onDetach 方法。 在使用 Fragment 的过程中,我们需要了解以下几个常用的类: 1. FragmentFragment 的基础类,需要重载多个生命周期方法; 2. FragmentManager: 管理 Fragment 的类,Fragment 的添加、移除、替换、显示、隐藏等操作; 3. FragmentTransaction: Fragment 操作类,封装了一组可以在 FragmentManager 上执行的操作。 在使用 Fragment 的时候,一般需要实现以下步骤: 1. 在 Activity 中定义一个容器,用于存放 Fragment 对象; 2. 创建 Fragment 对象; 3. 将 Fragment 对象添加到容器中; 4. 在 Fragment 中定义 UI 和数据绑定等处理。 例如,我们可以在 Activity 中定义一个容器,然后通过 FragmentManager 创建一个 Fragment 对象,并将其添加到容器中: ``` FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); MyFragment myFragment = new MyFragment(); transaction.add(R.id.container, myFragment); transaction.commit(); ``` 在 Fragment 中,我们可以定义 UI 并进行数据绑定: ``` public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_my, container, false); TextView textView = view.findViewById(R.id.text_view); textView.setText("Hello Fragment"); return view; } } ``` 这样,我们就可以在 Activity 中加载 Fragment,并在 Fragment 中显示 UI 和数据信息。 总而言之,使用 Android Fragment 可以使我们更好地进行模块化开发、实现 UI 动态加载、数据隔离、屏幕适配等功能。同时,在开发过程中,需要熟悉 Fragment 的生命周期及常用类的使用方法,才能更加高效地进行开发。 ### 回答3: Android Fragment(片段)是Android开发中一个重要的概念,它可以轻松地将一个Activity划分为多个子部分,每个部分可以独立地进行操作。正因为如此,Fragment成为了很多应用开发中的标配。 Fragment适用于动态UI、动态加载和给大屏幕设备提供一个更加灵活的界面。Fragment可以被看做是Activity中的一个小模块,可实现模块化编程,当然Fragment的生命周期也不同于Activity,系统对它的管理也是不同的。 切割UI界面为小块(模块),实现模块化程度,Fragment使用可以提供更好的用户界面体验。例如,在平板电脑中列表在右边,详细视图在左边,而在普通手机中这个列表是单独呈现的,这时候使用Fragment就可以轻易地划分页面布局,做到简洁协调。 为了使用Fragment,首先需要了解一些重要的概念: Fragment的生命周期:与Activity的生命周期相似,括onCreate()、onStart()、onResume()、onPause()、onStop()和onDestroy()等方法。 Fragment管理:Android提供了FragmentManager和FragmentTransaction两个类来管理Fragment的添加、删除、替换等等操作。需要注意的是,Fragment的管理和Activity的管理是有区别的。 使用Fragment时,还需要注意以下几点: 1. Fragment 的激活必须通过 FragmentTransaction 的commit() 函数实现,否则不会被添加到 FragmentManager。 2. 通过使用layout创建一个Fragment 的Activity布局,再通过 FragmentManager 加载相应的 Fragment,通过这种方式可以实现 Fragment 管理和Fragment 之间的通讯。 3. Fragment 可以嵌套使用,即一个 Fragment可以只是另一个 Fragment的一部分,这种设计可以更好的重用代码和布局。 总之,Android Fragment使用为应用程序开发带来了很多好处。它可以提高程序的灵活性和可扩展性,有助于构建清晰的UI体系结构,并支持模块化编程。使用Fragment的开发者可以通过Activity、Fragment和它们之间的通信来创建更加动态、灵活和易于维护的Android应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值