3-1.Android Fragment 之创建 Fragment

news/2024/9/28 16:22:38/

Fragment

  • Fragment 可以视为 Activity 的一个片段,它具有自己的生命周期和接收事件的能力,它有以下特点
  1. Fragment 依赖于 Activity,不能独立存在,Fragment 的生命周期受 Activity 的生命周期影响

  2. Fragment 将 Activity 的 UI 和功能划分为更小的模块,便于管理维护

  3. 多个 Activity 可以重用同一个 Fragment,一个 Activity 也可以使用多个 Fragment

  4. Fragment 可以动态地添加、移除、替换、隐藏,实现复杂的界面交互效果


创建 Fragment

1、通过 Android Studio 创建 Fragment
  1. 右击【包】 -> 【New】 -> 【Fragment】 -> 【Fragment(Blank)】,对于 Fragment Java 文件,命名尽量为 【Xxx】Fragment,对于 Fragment XML 文件,命名尽量为 fragment_【xxx】
  1. Android Studio 会自动在【包】下创建 Fragment Java 文件,在【layout 目录】下创建 Fragment XML 文件
java">/*** A simple {@link Fragment} subclass.* Use the {@link TestAFragment#newInstance} factory method to* create an instance of this fragment.*/
public class TestAFragment extends Fragment {// TODO: Rename parameter arguments, choose names that match// the fragment initialization parameters, e.g. ARG_ITEM_NUMBERprivate static final String ARG_PARAM1 = "param1";private static final String ARG_PARAM2 = "param2";// TODO: Rename and change types of parametersprivate String mParam1;private String mParam2;public TestAFragment() {// Required empty public constructor}/*** Use this factory method to create a new instance of* this fragment using the provided parameters.** @param param1 Parameter 1.* @param param2 Parameter 2.* @return A new instance of fragment TestAFragment.*/// TODO: Rename and change types and number of parameterspublic static TestAFragment newInstance(String param1, String param2) {TestAFragment fragment = new TestAFragment();Bundle args = new Bundle();args.putString(ARG_PARAM1, param1);args.putString(ARG_PARAM2, param2);fragment.setArguments(args);return fragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {mParam1 = getArguments().getString(ARG_PARAM1);mParam2 = getArguments().getString(ARG_PARAM2);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_test_a, container, false);}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".fragment.TestAFragment"><!-- TODO: Update blank fragment layout --><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:text="@string/hello_blank_fragment" /></FrameLayout>
  1. 对 Android Studio 自动创建的文件修修改改,在 Fragment Java 文件去除多余的代码和注释,在 Fragment XML 文件中修改控件(这里我更喜欢用 ConstraintLayout 控件),最后得到一个 Fragment 的框架
java">public class TestAFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_test_a, container, false);}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".fragment.TestAFragment"></androidx.constraintlayout.widget.ConstraintLayout>
2、手动创建 Fragment
  1. 右击【layout 目录】 -> 【New】 -> 【file】,创建 Fragment XML 文件,该文件命名尽量为 fragment_【xxx】.xml
  1. 对于 Fragment Java 文件,继承 Fragment,实现 onCreateView 方法
java">public class TestBFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.fragment_test_b, container, false);}
}
  1. 右击【包】 -> 【New】 -> 【Java Class】,创建 Fragment Java 文件,该文件命名尽量为 【Xxx】Fragment

  2. 对于 Fragment Xml 文件,添加控件(这里我更喜欢用 ConstraintLayout 控件)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".fragment.TestBFragment"></androidx.constraintlayout.widget.ConstraintLayout>

http://www.ppmy.cn/news/1531563.html

相关文章

从AR眼镜到智能巡检:XR技术的演变与未来潜力

XR&#xff0c;即扩展现实&#xff08;Extended Reality&#xff09;&#xff0c;是一个涵盖了增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和混合现实&#xff08;MR&#xff09;的广泛概念。 从我们最初接触到的手机应用到Hololens&#xff0c;…

基于深度学习的缺失数据的图像修复

基于深度学习的缺失数据图像修复是一种通过深度学习技术填补图像中缺失或损坏部分的过程。这种技术在图像处理领域具有重要意义&#xff0c;能够改善图像的视觉质量&#xff0c;并在许多实际应用中发挥作用&#xff0c;如图像恢复、视频编辑和图像生成等。 1. 方法概述 图像修…

机器学习中的元强化学习

机器学习中的元强化学习 引言 随着人工智能技术的不断发展&#xff0c;机器学习作为其核心分支之一&#xff0c;在各个领域取得了显著进展。其中&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&#xff09;作为机器学习的重要分支&#xff0c;通过让智能体&…

oracle 分表代码示例

在Oracle数据库中&#xff0c;分表通常指的是将一个大表分解成多个较小的表&#xff0c;以提高管理和查询效率。这通常是通过分区&#xff08;Partitioning&#xff09;来实现的&#xff0c;而不是传统意义上的将表拆分成多个独立的表。不过&#xff0c;如果你确实需要将一个大…

设计模式 策略模式(Strategy Pattern)

策略模式简绍 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它使你能在运行时改变对象的行为。该模式定义了一系列的算法&#xff0c;并将每一个算法封装起来&#xff0c;使它们可以相互替换。策略模式让算法独立于使用它的客户而变化。 …

【算法】KMP算法

目录 1、暴力做法及优化 2、next数组的含义 3、匹配思路及代码 4、实现next数组 5、最终代码 kmp算法主要解决的是字符串匹配问题 1、暴力做法及优化 假设我们现在有一个长度为n的模式串p"aabaaf"&#xff0c;一个长度为m的模板串s"aabaabaaf"&…

《机器学习》周志华-CH8(集成学习)

8.1个体与集成 集成学习(ensemble learning)通过构建并结合多个学习器来完成学习任务&#xff0c;有时也被称为多分类器系统&#xff0c;基于委员会的学习。 同质”集成“&#xff1a;只包含同种类型的个体学习器&#xff0c;同质集成中的个体学习器亦称“基学习器”&#xff0…

git rebase 调整提交顺序

今天在提交代码到gerrit上面后发现该笔提交之前有一笔本地加日志测试用的提交一起被带上去了: 1AC30902 (HEAD -> master) normal commit, modify xxx 82CC31A4 add test log 2364BBD1 normal commit2, modify yyy 其中&#xff0c;第二笔提交因为只是测试使用的&#xff0…