Android开发之Fragment

Fragment可以看作一种灵活的子Activity,其依附于Activity运行。一个Activity下可以依附多个Fragment,从而实现一个页面多个窗口,而同一个Fragment也能被多个Activity复用,因此Fragment是Android开发中相当重要的板块。

Fragment简单使用

基本架构

首先,在java代码里新建一个空白Fragment:
在这里插入图片描述
默认给的代码很多都是没用的,我们直接删掉,只保留创建函数:

package com.example.fragmentbase;

import android.os.Bundle;

import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class BlankFragment1 extends Fragment {


    private View root;
    private TextView textview;
    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (root == null){
            root = inflater.inflate(R.layout.fragment_blank1, container, false);
        }
        textview = root.findViewById(R.id.textview);
        button = root.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textview.setText("Clicked Button");
            }
        });
        return root;
    }
}

代码的整体逻辑是,在创建函数中根据布局文件fragment_blank1渲染出一个View放置在root中,之后获取到fragment中的textview和button,并声明一个点击响应函数,当按钮被点击时更改textview中的文本。

其中,渲染所需的布局文件需要我们自己编写,放在layout文件夹,在这里我放置了用于演示的TextView控件和Button控件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".BlankFragment1">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="@string/hello_blank_fragment" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="button"
        android:id="@+id/button"/>

</LinearLayout>

之后,在activity_main.xml中添加一个fragment,注意是小写,同时fragment作为组件比较特殊,必须要有一个id,否则会闪退。为了将这个fragment和我们编写的java代码绑定,我们需要给这个fragment设置name。

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

    <fragment android:name="com.example.fragmentbase.BlankFragment1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/fragment1"/>

</LinearLayout>

运行效果

初始界面:

点击按钮后:
在这里插入图片描述

在activity中加入多个fragment

代码很简单,复制一份BlankFragment1.javaBlankFragment2.java,然后在activity_main.xml中加入fragment2的内容,再在模拟器中运行,就可以看到两个页面了,这两个页面是并行互不干扰的,如下图:

在这里插入图片描述
点击上面的按钮后,上面的Fragment文本改变,而下面不变。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值