美文网首页
Android fragment介绍及基本使用

Android fragment介绍及基本使用

作者: 蜗牛是不是牛 | 来源:发表于2023-05-08 13:51 被阅读0次

    一 fragment的介绍

    一 什么是fragment?
    fragment是一个小的activity,点击不同的item,会显示不同的界面,这个界面就是fragment.
    可以在多个activity中重复使用一个fragment,所以可以把fragment视为activity中的模块化的组成部分
    二 为什么有fragment?
    使页面动态灵活设计
    为了让activity能更简洁地配置画面
    三 fragment的特点?
    1 Fragment 有自己的生命周期
    2 必须委托在activity中才能运行(所以Fragment的生命周期受activity影响),当activity销毁时,fragment就没了
    3 当activity运行时,可以独立操作fragment,动态增加移除一些fragment
    4 fragment可以自己接收输入事件

    image.png

    二 fragment的基本使用步骤

    此文写的是静态fragment,动态fragment请点这里

    step1 new一个 Fragment,写fragment的xml
    step2 Fragment.java里
    1 解析fragment的xml

        root = inflater.inflate(R.layout.fragment\_blank1,container,false);  
    2 随便写点操作  
    

    step3 activity_main.xml
    1 写<fragment>标签
    2 用name属性关联上之前写的fragment.java文件名
    3 加id(不然运行时会报错)
    step4 多个fragment
    1 添加多个Fragment.java的文件
    2 activity_main.xml里再添加多个<fragment>标签,设置权重layout_weight

    三 代码

    step1 new一个 Fragment,写fragment的xml

    image.png

    fragment_blank1.xml

    <?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">
    
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:text="你好美女" />
        <Button
            android:id="@+id/btn"
            android:text="回复"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>
    

    step2 Fragment.java里

    BlankFragment1.java

    package com.example.myfragment;
    
    
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.fragment.app.Fragment;
    
    
    
    public class BlankFragment1 extends Fragment {
    
        private View root;
        private TextView textView;
        private Button btn;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           
        }
    
        @Nullable
        @Override
        public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            if(root == null){
                //解析fragment的xml
                root = inflater.inflate(R.layout.fragment_blank1,container,false);
            }
            textView = root.findViewById(R.id.textView);
            btn = root.findViewById(R.id.btn);
            //随便写一个点击事件
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    textView.setText("你也好");
                }
            });
            return root;
        }
    }
    

    step3 activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <fragment
            android:id="@+id/fragment1"
            android:name="com.example.myfragment.BlankFragment1"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>
        <fragment
            android:id="@+id/fragment2"
            android:name="com.example.myfragment.BlankFragment2"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>
    
    </LinearLayout>
    

    step4 多个fragment

    image.png image.png

    效果

    image.png

    点击第一个fragment的按钮之后

    image.png

    相关文章

      网友评论

          本文标题:Android fragment介绍及基本使用

          本文链接:https://www.haomeiwen.com/subject/jsllsdtx.html