private void init() {
fragmentManager = getSupportFragmentManager();
fragmentA = new FragmentA();
fragmentB = new FragmentB();
fragmentC = new FragmentC();
// TODO: 有两种方式 1,依次add,控制hide和show,不会重新创建一个fragment
// TODO: 2, 每次replace,调用一次会重新创建一个fragment
// 开启事务 并提交(每次均返回一个事物对象)
fragmentManager.beginTransaction()
.add(R.id.activity_layout, fragmentA)
.commit();
//(系统自带的 不好用,每一个互相叠加)把 事物添加到 回退栈
//transaction.addToBackStack("A");
addToBackStack(fragmentA);
}
public void click(View v) {
FragmentTransaction transaction = fragmentManager.beginTransaction();
switch (v.getId()) {
case R.id.second_btn1:
if (fragmentA.isVisible()) {
return;
} else {
if (!fragmentA.isAdded()) {
transaction.add(R.id.activity_layout, fragmentA);
}
transaction.show(fragmentA).hide(fragmentB).hide(fragmentC);
}
//(系统自带的 不好用)把 事物添加到 回退栈
//transaction.addToBackStack("A");
addToBackStack(fragmentA);
break;
case R.id.second_btn2:
if (fragmentB.isVisible()) {
return;
} else {
if (!fragmentB.isAdded()) {
transaction.add(R.id.activity_layout, fragmentB);
}
transaction.show(fragmentB).hide(fragmentA).hide(fragmentC);
}
//(系统自带的 不好用)把 事物添加到 回退栈
// transaction.addToBackStack("B");
addToBackStack(fragmentB);
break;
case R.id.second_btn3:
if (fragmentC.isVisible()) {
return;
} else {
if (!fragmentC.isAdded()) {
transaction.add(R.id.activity_layout, fragmentC);
}
transaction.show(fragmentC).hide(fragmentA).hide(fragmentB);
}
//(系统自带的 不好用)把 事物添加到 回退栈
// transaction.addToBackStack("B");
addToBackStack(fragmentC);
break;
}
transaction.commit();
}
@Override
public void onBackPressed() {
//super.onBackPressed();
if (listFragment.size() > 1) {
int size = listFragment.size();
//移除最后一个,显示倒数第2个 fragment
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.remove(listFragment.get(size - 1))
.show(listFragment.get(size - 2));
transaction.commit();
//移除最后一个 list元素
listFragment.remove(size - 1);
} else {
finish();
}
}
private ArrayList<Fragment> listFragment = new ArrayList<>();
private void addToBackStack(Fragment fragment) {
if (listFragment.contains(fragment)) {
//把当前 fragment放在 list集合末尾
listFragment.remove(fragment);
listFragment.add(fragment);
} else {
listFragment.add(fragment);
}
}
转载请注明原文地址: https://ju.6miu.com/read-36656.html