1. 程式人生 > 其它 >二十五、Fragment(動態新增FragMent)

二十五、Fragment(動態新增FragMent)

1.主頁面

1.1 建立兩個Button按鈕,進行FragMent的切換,建立 FrameLayout 控制元件進行FragMent的最終顯示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        android:text="@string/change"></Button>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:text="@string/replace"></Button>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/framelayouts"
        android:background="@color/purple_200"></FrameLayout>
</LinearLayout>

2. 建立多個 Fragment ,不對其做任何更改

3. 後臺程式碼繫結

注意:FragMent 的 操作主要通過 FragmentManager 類進行管理

package com.example.dongtaifragment;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

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

//動態新增 fragment
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(this);
        Button btn2 = findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn:
                replaceFragment(new BlankFragment1());
                break;
            case R.id.btn2:
                replaceFragment(new ItemFragment());
                break;
        }
    }

    //同臺切換Fragment
    private void replaceFragment(Fragment fragment){
        FragmentManager fragmentManager = getSupportFragmentManager();
        //建立一個事件
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        //替換一個
        transaction.replace(R.id.framelayouts,fragment);
        //將fragment新增到站中,當點選手機返回時,會返回到上一個的頁面,
        //以值持續到回到最開始的頁面,然後返回桌面
        transaction.addToBackStack(null);
        //提交
        transaction.commit();
    }

}