简单实现Fragment回退栈效果
来源:互联网 发布:2017淘宝法律法规纳税 编辑:程序博客网 时间:2024/06/09 21:09
public class MainActivity extends FragmentActivity implements OnClickListener {
private FragmentA A;
private FragmentB B;
private FragmentC C;
private List<Fragment> mList = new ArrayList<Fragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnA).setOnClickListener(this);
findViewById(R.id.btnB).setOnClickListener(this);
findViewById(R.id.btnC).setOnClickListener(this);
A = new FragmentA();
B = new FragmentB();
C = new FragmentC();
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fl, A, "FragmentA");
transaction.add(R.id.fl, B, "FragmentB");
transaction.add(R.id.fl, C, "FragmentC");
transaction.hide(B).hide(C).commit();
}
public void insertFragment(Fragment fragment) {
if (mList.contains(fragment)) {
mList.remove(fragment);
mList.add(fragment);
} else {
mList.add(fragment);
}
}
@Override
public void onClick(View v) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
switch (v.getId()) {
case R.id.btnA:
insertFragment(A);
tr.hide(B).hide(C).show(A).commit();
break;
case R.id.btnB:
insertFragment(B);
tr.hide(A).hide(C).show(B).commit();
break;
case R.id.btnC:
insertFragment(C);
tr.hide(A).hide(B).show(C).commit();
break;
default:
break;
}
}
@Override
public void onBackPressed() {
Log.i("tag", "size" + mList.size());
if (mList.size() > 1) {
hideCurrentFragment(mList.size() - 1);
mList.remove(mList.size() - 1);// 移除最顶上的
// 将此时集合顶上显示出来
showFragment(mList.size() - 1);
} else {// ==1
finish();
}
}
private void hideCurrentFragment(int i) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
Fragment fragment = mList.get(i);
tr.hide(fragment).commit();
}
private void showFragment(int i) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
Fragment fragment = mList.get(i);
tr.show(fragment).commit();
}
private FragmentA A;
private FragmentB B;
private FragmentC C;
private List<Fragment> mList = new ArrayList<Fragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnA).setOnClickListener(this);
findViewById(R.id.btnB).setOnClickListener(this);
findViewById(R.id.btnC).setOnClickListener(this);
A = new FragmentA();
B = new FragmentB();
C = new FragmentC();
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fl, A, "FragmentA");
transaction.add(R.id.fl, B, "FragmentB");
transaction.add(R.id.fl, C, "FragmentC");
transaction.hide(B).hide(C).commit();
}
public void insertFragment(Fragment fragment) {
if (mList.contains(fragment)) {
mList.remove(fragment);
mList.add(fragment);
} else {
mList.add(fragment);
}
}
@Override
public void onClick(View v) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
switch (v.getId()) {
case R.id.btnA:
insertFragment(A);
tr.hide(B).hide(C).show(A).commit();
break;
case R.id.btnB:
insertFragment(B);
tr.hide(A).hide(C).show(B).commit();
break;
case R.id.btnC:
insertFragment(C);
tr.hide(A).hide(B).show(C).commit();
break;
default:
break;
}
}
@Override
public void onBackPressed() {
Log.i("tag", "size" + mList.size());
if (mList.size() > 1) {
hideCurrentFragment(mList.size() - 1);
mList.remove(mList.size() - 1);// 移除最顶上的
// 将此时集合顶上显示出来
showFragment(mList.size() - 1);
} else {// ==1
finish();
}
}
private void hideCurrentFragment(int i) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
Fragment fragment = mList.get(i);
tr.hide(fragment).commit();
}
private void showFragment(int i) {
FragmentManager manager = this.getSupportFragmentManager();
FragmentTransaction tr = manager.beginTransaction();
Fragment fragment = mList.get(i);
tr.show(fragment).commit();
}
阅读全文
0 0
- 简单实现Fragment回退栈效果
- viewpager+Fragment实现简单滑动切换效果
- 简单viewpager布局加fragment联动 可以实现效果
- Fragment 实现动画效果
- fragment实现Tab效果
- Fragment(1)-简单实现
- viewpager + fragment实现动画效果
- 使用Fragment实现tabhost效果
- Fragment 实现的 分类 效果
- 使用Fragment实现tabhost效果
- 使用Fragment实现tabhost效果
- viewpager+fragment实现滑动效果
- Fragment实现tab页效果
- Fragment实现tabhost的效果
- Viewpager+Fragment实现滚动效果
- 使用Fragment实现tabhost效果
- Activity和fragment的简单切换效果
- viewpage+fragment的简单实现
- Activity, Fragment, WebView的状态保存和恢复
- Fastdfs入门启示
- MySQL5.7.17源码编译安装与配置
- 第4周项目1
- 按位取反
- 简单实现Fragment回退栈效果
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- Android开发优秀开源项目汇总(不断更新)
- 事件
- Android和H5之间的交互
- css3的新属性border-radius的用法
- python日期与时间
- Android动态加载Jar
- node路径