现有这样一个场景,从Fragment1跳转到Fragment2再跳转到Fragment3,

如何实现按下回退键直接从Fragment3返回Fragment1?

利用FragmentManager的getBackStackEntryCount() 来获取当前回退栈中Fragment的个数

如果大于1就循环弹出栈顶fragment

具体代码实现

public class FragmentActivity extends AppCompatActivity implements OnReplace {    private FrameLayout frameLayout;    private BlankFragment blankFragment;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_fragment);        frameLayout = (FrameLayout) findViewById(R.id.frameLayout);        fragmentManager = getSupportFragmentManager();        FragmentTransaction transaction = fragmentManager.beginTransaction();        blankFragment  = new BlankFragment();        transaction.add(R.id.frameLayout, blankFragment);        transaction.commit();    }    @Override    public void onBackPressed() {        // 获取当前回退栈中的Fragment个数        int backStackEntryCount = fragmentManager.getBackStackEntryCount();        //如果大于1 就做循环回退        if (backStackEntryCount > 1) {            while (fragmentManager.getBackStackEntryCount() > 0) {                super.onBackPressed();            }        }    }    private FragmentManager fragmentManager;    @Override    public void onReplace(int index) {        final BlankFragment2 blankFragment2 = new BlankFragment2();        final BlankFragment3 blankFragment3 = new BlankFragment3();        switch (index) {            case 1:                fragmentManager.beginTransaction()                        .addToBackStack(null)                        .replace(R.id.frameLayout,blankFragment2)                        .commit();                break;            case 2:                fragmentManager.beginTransaction()                        .replace(R.id.frameLayout,blankFragment3)                        .addToBackStack(null)                        .commit();                break;        }    }}



更多相关文章

  1. Android(安卓)DataPickerDialog组建只显示年月或月日
  2. Android(安卓)N获取外置SD卡或挂载U盘路径的方法
  3. Android上UDP组播无法接收数据的问题
  4. 简单模拟Android中AlertDialog的Builder设计模式
  5. android获取网络图片
  6. Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成
  7. Android:Activity(三):启动其他Activity并返回结果
  8. Android根据所设置的textSize获取字体高度和设置行高
  9. Android之判断是否安装某个应用

随机推荐

  1. 高效的SQLSERVER分页查询(推荐)
  2. 真正高效的SQLSERVER分页查询(多种方案)
  3. SSB(SQLservice Service Broker) 入门实
  4. sql server 中合并某个字段值的实例
  5. 数据库中两张表之间的数据同步增加、删除
  6. SQL Server数据库中批量导入数据的四种方
  7. sqlserver数据库出现置疑的解决思路
  8. MSSQL 2005/2008 日志压缩清理方法小结
  9. SQL Server游标的使用/关闭/释放/优化小
  10. Sql学习第四天——SQL 关于with cube,wit