导致有线问题的 Android Fragment 返回堆栈

标签 android android-fragments

我在以下序列中的单个 Activity 中有 fragment 。

fragment 1 --> fragment 2 --> fragment 3 --> fragment 4

我正在使用以下代码进行 fragment 交易。

mFragmentTransaction=mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.fragment_container, mFragment,fragmentname);
mFragmentTransaction.addToBackStack(tag);
mFragmentTransaction.commit();

我想做的是当用户在 fragment 3 或 4 上然后按后退键 如果用户在 fragment 4 上,则 fragment 4 --> fragment 3 --> fragment 1。 如果用户在 fragment 3 上,则 fragment 3 --> fragment 1。

我在 onback press 中使用以下代码。

if(mFragmentManager.findFragmentByTag("fragment 3")!=null){


            mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);



        }else{
            super.onBackPressed();
        }

但它会导致按下后退时出现连线问题,如下所示。

fragment 4 --> fragment 1 而不是 fragment 4 --> fragment 3 --> fragment 1。 fragment 3 --> fragment 1

请帮忙。

最佳答案

您需要另一个嵌套的 if 语句。您有一个检查 fragment 是否为空的方法,但是您需要检查该 fragment 是否可见。

if(mFragmentManager.findFragmentByTag("fragment 3")!=null){
     if(mFragmentManager.findFragmentByTag("fragment 3").isVisible()){
        mFragmentManager.popBackStack("fragment 2",FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
}
else{
        super.onBackPressed();
}

关于导致有线问题的 Android Fragment 返回堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605571/

相关文章:

android - 敏捷异常 : Cannot merge new index 65536 into a non-jumbo instruction

android - 使用 ContentValues 和更新方法更新 sql 数据库

java - 将ArrayList的ArrayList放入一个bundle中,可parcelable

java - 由于没有窗口焦点,返回主 Activity 会导致 Dropping 事件

Android:如何构建多级选项卡

android - 无法解析方法 'managedQuery"

java - 更新 fragment 中的ListView

android-fragments - 在底部导航片段之间切换时工具栏会闪烁

android - 设备启动时的 BroadcastReceiver 和 AlarmManager

android - 如何使用复选框在 fragment 内的弹出菜单中显示所选项目?