fragment增删查替

发布时间 2023-04-10 00:01:58作者: 实名吓我一跳

一:增加

第一种方式:最常用方式

public void addFragment1(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fcv, DynamicFragment.class,null).setReorderingAllowed(true).commit();
}

第二种方式:推入栈,但出来比较麻烦,因为替换后,还得一个一个消除,在后台

public void addFragment2(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fcv, DynamicFragment.class,null)
.addToBackStack("myBackStack")
.setReorderingAllowed(true)
.commit();
}

第三种方式:定义一个对象

public void addFragment3(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
DynamicFragment dynamicFragment = new DynamicFragment();
fragmentTransaction.add(R.id.fcv,dynamicFragment)
.setReorderingAllowed(true)
.commit();
}

二:清除

public void removeFragment(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
Fragment fragment = supportFragmentManager.findFragmentById(R.id.fcv);
if(fragment != null)
{
Toast.makeText(this, "找到了,消除", Toast.LENGTH_SHORT).show();
fragmentTransaction.remove(fragment).commit();
}
else
{
Toast.makeText(this, "没有找到", Toast.LENGTH_SHORT).show();
}
}

三:查找

通过id查找(还有tag)

public void findFragmentById(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
Fragment fragment = supportFragmentManager.findFragmentById(R.id.fcv);
if(fragment != null)
{
Toast.makeText(this, "找到了", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "没有找到", Toast.LENGTH_SHORT).show();
}
// FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
}

四:替换

public void replaceFragment(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
DynamicFragment dynamicFragment = new DynamicFragment();
fragmentTransaction.replace(R.id.fcv,dynamicFragment).commit();
}
全部代码:
public class FragmentModifyActivity extends AppCompatActivity {

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

public void addFragment1(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fcv, DynamicFragment.class,null).commit();
}

public void addFragment2(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fcv, DynamicFragment.class,null)
.addToBackStack("myBackStack")
.setReorderingAllowed(true)
.commit();
}

public void addFragment3(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
DynamicFragment dynamicFragment = new DynamicFragment();
fragmentTransaction.add(R.id.fcv,dynamicFragment)
.addToBackStack("myBackStack")
.setReorderingAllowed(true)
.commit();
}

public void findFragmentById(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
Fragment fragment = supportFragmentManager.findFragmentById(R.id.fcv);
if(fragment != null)
{
Toast.makeText(this, "找到了", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "没有找到", Toast.LENGTH_SHORT).show();
}
// FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
}

public void removeFragment(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
Fragment fragment = supportFragmentManager.findFragmentById(R.id.fcv);
if(fragment != null)
{
Toast.makeText(this, "找到了,消除", Toast.LENGTH_SHORT).show();
fragmentTransaction.remove(fragment).commit();
}
else
{
Toast.makeText(this, "没有找到", Toast.LENGTH_SHORT).show();
}
}

public void replaceFragment(View view) {
FragmentManager supportFragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
DynamicFragment dynamicFragment = new DynamicFragment();
fragmentTransaction.replace(R.id.fcv,dynamicFragment).commit();
}
}
其他和上篇一致。