Fragment 二

今天继续接着学习Fragment

今天学习了Fragment的增删改查

 

 

 

三种添加方式,一种替换,一种删除,两种隐藏,两种显现。

代码如下:

 

主要把改过的代码发一下,上个博客中之前的部分。

ModifyFragmentActivity

 

复制代码
package com.example.fragment.modify;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

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

import com.example.fragment.GlobalConstants;
import com.example.fragment.R;
import com.example.fragment.fragment.DynameicFragment;

public class ModifyFragmentActivity extends AppCompatActivity {
//声明tag
private static final String TAG = GlobalConstants.TAG;//logt快速生成
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_modify_fragment);
    }

    public void addFragment1(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();

        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.add(R.id.fcv, DynameicFragment.class, null,"MyFragment")
                .commit()
        ;
        //点击一次有一个fragment
    }

    public void addFragment2(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();

        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

        fragmentTransaction.add(R.id.fcv, DynameicFragment.class, null)
                .addToBackStack("myBackStack")//后台栈中
                .setReorderingAllowed(true)
                .commit()
        ;


    }

    public void addFragment3(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();

        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        DynameicFragment dynameicFragment = new DynameicFragment();

        //传参数的话可以通过构造函数传入
        fragmentTransaction.add(R.id.fcv, dynameicFragment)
                .commit()
        ;


    }


    public void findFragmentById(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
        if (fragment != null) {
            Toast.makeText(this, "找到了Fragment" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
            Log.d(TAG, "findFragmentById: \"找到了Fragment\" + fragmentManager.toString()");//小写logd快速出
        } else {
            Toast.makeText(this, "没找到Fragment" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
            Log.d(TAG, "findFragmentById: \"即将移除Fragment\" ");//小写logd快速出
                }

    }

    public void findFragmentByTag(View view) {

        FragmentManager fragmentManager = getSupportFragmentManager();
        Fragment fragment = fragmentManager.findFragmentByTag("MyFragment");
        if (fragment != null) {
            Toast.makeText(this, "找到了Fragment" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "没找到Fragment" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
        }

    }

    public void removeFragment(View view) {//后台栈的不会删除,相当于隐藏,按返回键才会删除
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
        if (fragment != null) {
            Toast.makeText(this, "找到了Fragment,并成功移除" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
            Log.d(TAG, "findFragmentById: \"即将移除Fragment\" ");//小写logd快速出
            fragmentTransaction.remove(fragment).commit();
        } else {
            Toast.makeText(this, "没找到Fragment" + fragmentManager.toString(), Toast.LENGTH_SHORT).show();
            Log.d(TAG, "findFragmentById: \"即将移除Fragment\" ");//小写logd快速出
        }

    }

    public void replaceFragment(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        DynameicFragment dynameicFragment = new DynameicFragment();
        Bundle bundle = new Bundle();
        //将ARG_PARAM1改为public 或者bundle.putString("param1","要输入的文字");
        bundle.putString(DynameicFragment.ARG_PARAM1,"这是新替换的Fragment");//做个标记
        dynameicFragment.setArguments(bundle);
        fragmentTransaction.replace(R.id.fcv,dynameicFragment).commit();


    }

    public void hideFragment(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
       if(fragment!=null){
           fragmentTransaction.hide(fragment).commit();
       }
    }


    public void showFragment(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
        if(fragment!=null){
            fragmentTransaction.show(fragment).commit();
        }
    }

    public void attachFragment(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
        if(fragment!=null){
            fragmentTransaction.attach(fragment).commit();
        }

    }

    public void detachFragment(View view) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        Fragment fragment = fragmentManager.findFragmentById(R.id.fcv);
        if(fragment!=null){
            fragmentTransaction.detach(fragment).commit();
        }
    }
}


    //命令adb shell dumpsys activity fragment可以查看添加的fragment
复制代码

activity_modify_fragment.xml

复制代码
<?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"
    tools:context=".modify.ModifyFragmentActivity"
    android:orientation="vertical"
    >
    <androidx.fragment.app.FragmentContainerView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/fcv"
        android:layout_marginTop="15dp"
        />






    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="addFragment1"
        android:gravity="center"
        android:onClick="addFragment1"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="addFragment2"
        android:gravity="center"
        android:onClick="addFragment2"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="addFragment3"
        android:gravity="center"
        android:onClick="addFragment3"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="findFragmentById"
        android:gravity="center"
        android:onClick="findFragmentById"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>


    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="findFragmentByTag"
        android:gravity="center"
        android:onClick="findFragmentByTag"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>


    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="removeFragment"
        android:gravity="center"
        android:onClick="removeFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>



    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="replaceFragment"
        android:gravity="center"
        android:onClick="replaceFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="hideFragment"
        android:gravity="center"
        android:onClick="hideFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>


    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="showFragment"
        android:gravity="center"
        android:onClick="showFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>


    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="attachFragment"
        android:gravity="center"
        android:onClick="attachFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>

    <Button
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:textAlignment="center"
        android:text="detachFragment"
        android:gravity="center"
        android:onClick="detachFragment"
        android:layout_gravity="center_horizontal"
        android:textAllCaps="false"
        ></Button>
</LinearLayout>
复制代码

DynameicFragment.xml

复制代码
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package java.lang;

import androidx.annotation.RecentlyNonNull;
import androidx.annotation.RecentlyNullable;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Comparator;
import java.util.Locale;

public final class String implements Serializable, Comparable<String>, CharSequence {
    public static final Comparator<String> CASE_INSENSITIVE_ORDER = null;

    public String() {
        throw new RuntimeException("Stub!");
    }

    public String(@RecentlyNonNull String original) {
        throw new RuntimeException("Stub!");
    }

    public String(char[] value) {
        throw new RuntimeException("Stub!");
    }

    public String(char[] value, int offset, int count) {
        throw new RuntimeException("Stub!");
    }

    public String(int[] codePoints, int offset, int count) {
        throw new RuntimeException("Stub!");
    }

    /** @deprecated */
    @Deprecated
    public String(byte[] ascii, int hibyte, int offset, int count) {
        throw new RuntimeException("Stub!");
    }

    /** @deprecated */
    @Deprecated
    public String(byte[] ascii, int hibyte) {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes, int offset, int length, @RecentlyNonNull String charsetName) throws UnsupportedEncodingException {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes, int offset, int length, @RecentlyNonNull Charset charset) {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes, @RecentlyNonNull String charsetName) throws UnsupportedEncodingException {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes, @RecentlyNonNull Charset charset) {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes, int offset, int length) {
        throw new RuntimeException("Stub!");
    }

    public String(byte[] bytes) {
        throw new RuntimeException("Stub!");
    }

    public String(@RecentlyNonNull StringBuffer buffer) {
        throw new RuntimeException("Stub!");
    }

    public String(@RecentlyNonNull StringBuilder builder) {
        throw new RuntimeException("Stub!");
    }

    public int length() {
        throw new RuntimeException("Stub!");
    }

    public boolean isEmpty() {
        throw new RuntimeException("Stub!");
    }

    public native char charAt(int var1);

    public int codePointAt(int index) {
        throw new RuntimeException("Stub!");
    }

    public int codePointBefore(int index) {
        throw new RuntimeException("Stub!");
    }

    public int codePointCount(int beginIndex, int endIndex) {
        throw new RuntimeException("Stub!");
    }

    public int offsetByCodePoints(int index, int codePointOffset) {
        throw new RuntimeException("Stub!");
    }

    public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) {
        throw new RuntimeException("Stub!");
    }

    /** @deprecated */
    @Deprecated
    public void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin) {
        throw new RuntimeException("Stub!");
    }

    public byte[] getBytes(@RecentlyNonNull String charsetName) throws UnsupportedEncodingException {
        throw new RuntimeException("Stub!");
    }

    public byte[] getBytes(@RecentlyNonNull Charset charset) {
        throw new RuntimeException("Stub!");
    }

    public byte[] getBytes() {
        throw new RuntimeException("Stub!");
    }

    public boolean equals(@RecentlyNullable Object anObject) {
        throw new RuntimeException("Stub!");
    }

    public boolean contentEquals(@RecentlyNonNull StringBuffer sb) {
        throw new RuntimeException("Stub!");
    }

    public boolean contentEquals(@RecentlyNonNull CharSequence cs) {
        throw new RuntimeException("Stub!");
    }

    public boolean equalsIgnoreCase(@RecentlyNullable String anotherString) {
        throw new RuntimeException("Stub!");
    }

    public native int compareTo(@RecentlyNonNull String var1);

    public int compareToIgnoreCase(@RecentlyNonNull String str) {
        throw new RuntimeException("Stub!");
    }

    public boolean regionMatches(int toffset, @RecentlyNonNull String other, int ooffset, int len) {
        throw new RuntimeException("Stub!");
    }

    public boolean regionMatches(boolean ignoreCase, int toffset, @RecentlyNonNull String other, int ooffset, int len) {
        throw new RuntimeException("Stub!");
    }

    public boolean startsWith(@RecentlyNonNull String prefix, int toffset) {
        throw new RuntimeException("Stub!");
    }

    public boolean startsWith(@RecentlyNonNull String prefix) {
        throw new RuntimeException("Stub!");
    }

    public boolean endsWith(@RecentlyNonNull String suffix) {
        throw new RuntimeException("Stub!");
    }

    public int hashCode() {
        throw new RuntimeException("Stub!");
    }

    public int indexOf(int ch) {
        throw new RuntimeException("Stub!");
    }

    public int indexOf(int ch, int fromIndex) {
        throw new RuntimeException("Stub!");
    }

    public int lastIndexOf(int ch) {
        throw new RuntimeException("Stub!");
    }

    public int lastIndexOf(int ch, int fromIndex) {
        throw new RuntimeException("Stub!");
    }

    public int indexOf(@RecentlyNonNull String str) {
        throw new RuntimeException("Stub!");
    }

    public int indexOf(@RecentlyNonNull String str, int fromIndex) {
        throw new RuntimeException("Stub!");
    }

    public int lastIndexOf(@RecentlyNonNull String str) {
        throw new RuntimeException("Stub!");
    }

    public int lastIndexOf(@RecentlyNonNull String str, int fromIndex) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String substring(int beginIndex) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String substring(int beginIndex, int endIndex) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public CharSequence subSequence(int beginIndex, int endIndex) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public native String concat(@RecentlyNonNull String var1);

    @RecentlyNonNull
    public String replace(char oldChar, char newChar) {
        throw new RuntimeException("Stub!");
    }

    public boolean matches(@RecentlyNonNull String regex) {
        throw new RuntimeException("Stub!");
    }

    public boolean contains(@RecentlyNonNull CharSequence s) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String replaceFirst(@RecentlyNonNull String regex, @RecentlyNonNull String replacement) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String replaceAll(@RecentlyNonNull String regex, @RecentlyNonNull String replacement) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String replace(@RecentlyNonNull CharSequence target, @RecentlyNonNull CharSequence replacement) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String[] split(@RecentlyNonNull String regex, int limit) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String[] split(@RecentlyNonNull String regex) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String join(@RecentlyNonNull CharSequence delimiter, @RecentlyNullable CharSequence... elements) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String join(@RecentlyNonNull CharSequence delimiter, @RecentlyNonNull Iterable<? extends CharSequence> elements) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String toLowerCase(@RecentlyNonNull Locale locale) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String toLowerCase() {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String toUpperCase(@RecentlyNonNull Locale locale) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String toUpperCase() {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String trim() {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public String toString() {
        throw new RuntimeException("Stub!");
    }

    public native char[] toCharArray();

    @RecentlyNonNull
    public static String format(@RecentlyNonNull String format, @RecentlyNonNull Object... args) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String format(@RecentlyNonNull Locale l, @RecentlyNonNull String format, @RecentlyNonNull Object... args) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(@RecentlyNullable Object obj) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(char[] data) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(char[] data, int offset, int count) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String copyValueOf(char[] data, int offset, int count) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String copyValueOf(char[] data) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(boolean b) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(char c) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(int i) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(long l) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(float f) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public static String valueOf(double d) {
        throw new RuntimeException("Stub!");
    }

    @RecentlyNonNull
    public native String intern();
}
复制代码

fragment_dynameic.xml

复制代码
<?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=".fragment.DynameicFragment">

    <!-- TODO: Update blank fragment layout -->
    <TextView


        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="这是动态fragment" />

    <TextView
        android:layout_marginTop="25sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_content"
        android:textSize="25sp"
        ></TextView>

</FrameLayout>
复制代码

 

posted @   信2005-2赵磊  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示