Fragment的初步应用
#Fragment的动态创建
//获得fragment管理类
manager = getSupportFragmentManager();
//事务
fragmentTransaction = manager.beginTransaction();
//添加
fragmentTransaction.add(R.id.frag,myFragment01,"fm01");
fragmentTransaction.addToBackStack("fm01");
//执行
fragmentTransaction.commit();
Fragment的增删改查
增加
//第一个是添加到具体的空间中
//第二个是fragment
//第三个起的昵称
fragmentTransaction.add(R.id.frag,myFragment01,"fm01");
删除
//第一个是添加到具体的空间中
//第二个是fragment
//第三个起的昵称
//移除上一个fragment
//fragmentTransaction1.remove(myFragment01);
改
//第一个是添加到具体的空间中
//第二个是fragment
//第三个起的昵称
//替换
fragmentTransaction1.replace(R.id.frag,twoFragment,"niha");
隐藏
//第一个是添加到具体的空间中
//第二个是fragment
//第三个起的昵称
//隐藏
//fragmentTransaction1.hide(myFragment01);
添加到栈中的方法
//参数是添加后创建的昵称
fragmentTransaction1.addToBackStack("woshi");
Fragment回退栈的用法
//manager是创建的管理类
manager.popBackStack();//回退一个
/**
* 四种情况
* flags只有0和1
* 第一种name=null,flags=0 回退一个
* 第二种name=null,flags=1 所有fragment全部清掉 清除栈中的所有 清栈
* 第三种name=创建的名字,flags=0 弹出name对应的fragment 以上的所有的fragment
* 第四种name=有值,flags=1 弹出name对应的fragment上边的所有fragment包括自己
*/
// manager.popBackStack(null,0);//第一种
// manager.popBackStack(null,1);//第二种
// manager.popBackStack("fm01",0);//第三种
manager.popBackStack("fm01",1);//第四种
//立刻回退一个 强制性命令点击必须退出一般用以上几种
manager.popBackStackImmediate();
全部代码
package com.bb.myfragment;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity {
private RadioButton btnOne;
private RadioButton btnTwo;
private RadioButton btnThree;
private static final String TAG = "MainActivity";
private TwoFragment twoFragment;
private MyFragment01 myFragment01;
private FragmentTransaction fragmentTransaction;
private FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnOne = findViewById(R.id.btn_one);
btnTwo = findViewById(R.id.btn_two);
btnThree = findViewById(R.id.btn_three);
twoFragment = new TwoFragment();
myFragment01 = new MyFragment01();
//获得fragment管理类
manager = getSupportFragmentManager();
//事务
fragmentTransaction = manager.beginTransaction();
//添加
fragmentTransaction.add(R.id.frag,myFragment01,"fm01");
fragmentTransaction.addToBackStack("fm01");
//执行
fragmentTransaction.commit();
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction1 = fragmentManager.beginTransaction();
//移除上一个fragment
//fragmentTransaction1.remove(myFragment01);
//隐藏
//fragmentTransaction1.hide(myFragment01);
//替换
fragmentTransaction1.replace(R.id.frag,twoFragment,"niha");
//参数是创建的名字
fragmentTransaction1.addToBackStack("niha");
Log.i(TAG, "onClick: 点击了替换");
fragmentTransaction1.commit();
}
});
btnTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction1 = fragmentManager.beginTransaction();
fragmentTransaction1.add(R.id.frag,twoFragment,"woshi");
//将这个fragment添加到栈中
fragmentTransaction1.addToBackStack("woshi");
// //展示
// fragmentTransaction1.show(twoFragment);
fragmentTransaction1.commit();
}
});
btnThree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
manager.popBackStack();//回退一个
/**
* 四种情况
* flags只有0和1
* 第一种name=null,flags=0 回退一个
* 第二种name=null,flags=1 所有fragment全部清掉 清除栈中的所有 清栈
* 第三种name=创建的名字,flags=0 弹出name对应的fragment 以上的所有的fragment
* 第四种name=有值,flags=1 弹出name对应的fragment上边的所有fragment包括自己
*/
// manager.popBackStack(null,0);//第一种
// manager.popBackStack(null,1);//第二种
// manager.popBackStack("fm01",0);//第三种
manager.popBackStack("fm01",1);//第四种
//立刻回退一个 强制性命令点击必须退出一般用以上几种
manager.popBackStackImmediate();
}
});
}
}
全部布局代码
<?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">
<FrameLayout
android:id="@+id/frag"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<RadioGroup
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/btn_one"
android:text="点击显示图片"
android:layout_weight="1"
android:button="@null"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioButton
android:id="@+id/btn_two"
android:text="点击叠加图片"
android:button="@null"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RadioButton
android:id="@+id/btn_three"
android:text="haha"
android:button="@null"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RadioGroup>
</LinearLayout>