安卓:Fragment

3 篇文章 0 订阅
Fragment是Android平台上的UI组件,用于构建灵活的界面模块。它有独立的生命周期,可嵌入Activity中。文章介绍了Fragment的静态和动态添加方法,包括在布局文件中声明和通过代码动态添加,并提供了示例代码。
摘要由CSDN通过智能技术生成

目录

一、Fragment介绍

二、Fragment的使用方式

(一)、Fragment静态添加:

静态添加例子:

FirstFragment :

MainActivity: 

main_activity: 

fragment_first: 

静态添加的总结:

 (二)、Fragment动态添加:

Fragment动态添加例子:

 MainActivity :

Fragment动态的添加总结:

一、Fragment介绍

        Fragment 是 Android 平台上的一种 UI 组件,用于构建灵活且可复用的界面模块。每个 Fragment 都有自己的生命周期,可以嵌入到 Activity 中,并在一个 Activity 内部管理其自己的布局和行为。通过使用 Fragment,可以实现更加模块化和灵活的应用程序设计,提高代码的可重用性和可维护性。

Fragment 具有以下特点和优势:

  1. 模块化:Fragment 可以作为 Activity 的独立模块存在,使得应用程序的 UI 可以更细粒度地进行设计和组织。多个 Fragment 可以在同一个 Activity 中共存,实现更复杂的界面和交互效果。

  2. 生命周期:Fragment 拥有自己的生命周期,与包含它的 Activity 分开管理。这意味着可以在 Fragment 的生命周期方法中执行特定的操作,例如在创建、销毁和暂停时进行相应的处理。

  3. 布局灵活性:每个 Fragment 都可以拥有自己的布局文件,通过组合和嵌套 Fragment,可以实现灵活多样的用户界面布局。

  4. 通信与交互:Fragment 可以通过 Activity 传递数据和事件,也可以与其他 Fragment 进行通信。这种通信可以通过接口回调、共享 ViewModel 等方式实现。

  5. 适配性:通过使用 Fragment,可以更好地适应不同尺寸的屏幕和设备。可以根据屏幕大小和方向动态加载、替换或隐藏特定的 Fragment,以提供最佳的用户体验。

二、Fragment的使用方式

        运行 Fragment 的静态添加和动态添加是两种常见的方式,用于在 Activity 中加载和展示 Fragment。

(一)、Fragment静态添加:

静态添加是指在 Activity 的布局文件中直接声明 Fragment,并与相应的布局容器关联。在静态添加的情况下,Fragment 的生命周期与 Activity 的生命周期紧密相关,它们的创建和销毁是由 Activity 控制的。

静态添加例子:

FirstFragment :
package com.example.fragmentdemo;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class FirstFragment extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_first, container, false);
    }
}
MainActivity: 
package com.example.fragmentdemo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
main_activity: 
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="com.example.fragmentdemo.FirstFragment"
        android:layout_width="410dp"
        android:layout_height="425dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
fragment_first: 
<?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=".FirstFragment">

  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="25sp"
        android:text="我是第一个Fragment" />

</FrameLayout>

静态添加的总结:

静态添加的步骤如下:

  1. 在 Activity 的布局文件中添加 <fragment> 标签,并指定该标签的 android:name 属性为目标 Fragment 的完整类名。
  2. 可以使用其他属性来配置 Fragment,例如指定 android:layout_width 和 android:layout_height 来决定 Fragment 在布局中的大小和位置。

 (二)、Fragment动态添加:

        动态添加是指在运行时通过代码将 Fragment 动态添加到 Activity 中。与静态添加不同,动态添加提供了更大的灵活性,可以根据需要在特定的时机添加或移除 Fragment。

Fragment动态添加例子:

 MainActivity :
package com.example.fragmentdemo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 创建一个 Fragment 实例
        SecondFragment fragment = new SecondFragment();

        // 获取 FragmentManager
        FragmentManager fragmentManager = getSupportFragmentManager();

        // 开启事务
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        // 将 Fragment 添加到容器
        fragmentTransaction.add(R.id.container, fragment, "myFragment");

        // 提交事务
        fragmentTransaction.commit();

        // 找到按钮视图并设置点击事件监听器
        Button btnSwitch = findViewById(R.id.btnSwitch);
        btnSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 创建一个 FirstFragment 实例
                FirstFragment firstFragment = new FirstFragment();

                // 开启新的事务
                FragmentTransaction switchTransaction = fragmentManager.beginTransaction();

                // 替换当前的 Fragment
                switchTransaction.replace(R.id.container, firstFragment);

                // 提交事务
                switchTransaction.commit();
            }
        });

    }
}

FirstFragment 和SecondFragment 代码和布局跟上面的静态添加一样

Fragment动态的添加总结:

动态添加的步骤如下:

  1. 在 Activity 中定义一个 FragmentTransaction 对象,用于管理 Fragment 的添加、替换和移除操作。
  2. 使用 FragmentManager 获取 FragmentTransaction 对象。
  3. 调用 FragmentTransaction 的 add() 方法,将目标 Fragment 添加到 Activity 中,并指定一个容器视图的 ID,该 ID 对应于布局文件中的一个 View。
  4. 最后,调用 FragmentTransaction 的 commit() 方法提交事务,使得添加操作生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值