android的fragment笔记,引入一个fragment或者是两个


什么是fragment?
  • fragment是从android3.0开始的api
  • 依赖于activity不可以独立存在
  • 可以理解为一个activity中的一个小的可视化,可控制的view组件(但它又不是组件,是android的api)
引入一个fragment

在java中新建fragment应该是:

而不是直接新建一个java类

下面一个例子是使用一个fragment的例子:
文件目录:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>



    

fragment_blank.xml:

<?xml version="1.0" encoding="utf-8"?>


    

    

BlankFragment.java:

package com.example.myfragment;

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 BlankFragment extends Fragment {

    private View root;
    private TextView textView;
    private Button button;

    // TODO: Rename parameter arguments, choose names that match
    @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_blank, container, false);
        }
        textView = root.findViewById(R.id.textview);
        button = root.findViewById(R.id.btn);
//        模拟点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textView.setText("I'm fine.");
            }
        });
        return root;
    }
}

MainActivity.java:

package com.example.myfragment;
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);
    }
}

运行:

引入两个fragmetn:

只用修改部分文件:
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


    
    

    


BlankFragment2.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.fragment.app.Fragment;

public class BlankFragment2 extends Fragment {

    private View root;
    private TextView textView;
    private Button button;

    // TODO: Rename parameter arguments, choose names that match
    @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_blank, container, false);
        }
        textView = root.findViewById(R.id.textview);
        button = root.findViewById(R.id.btn);
//        模拟点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                textView.setText("I'm fine.");
            }
        });
        return root;
    }
}

即可完成