【问题标题】:how to avoid blank screen of activity when I back from last fragment当我从最后一个片段返回时如何避免活动的空白屏幕
【发布时间】:2020-02-05 08:26:43
【问题描述】:

我在这里使用

public void replaceFragment(Fragment fragment, boolean isMainPage, Bundle bundle) {
    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

    if (bundle != null) {
        fragment.setArguments(bundle);
    }

    System.out.println("isMainPage :: " + isMainPage);
    System.out.println("FRAGMENT NAME :: " + backStateName + " fragmentPopped :: " + fragmentPopped);

    if (!fragmentPopped) { //fragment not in back stack, create it.
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(R.id.main_fragment, fragment);

        if (isMainPage) {
            getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

        }
        int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
        System.out.println("backStackCount :: " + backStackCount);
        transaction.addToBackStack(backStateName);
        transaction.commit();
    }
}

用于替换整个项目的片段。我的问题是,当我从最后一个片段弹出时,它会显示空白页面,我的框架布局放置在该页面中以替换片段

<FrameLayout
    android:id="@+id/main_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

【问题讨论】:

  • 你必须计算一个 backStack 中的片段数量,如果你的活动没有片段调用完成
  • 在此处理 if (isMainPage) { getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); }

标签: android android-fragments fragment


【解决方案1】:

只需从您的代码中删除这一行,它就会解决您的问题。

transaction.addToBackStack(backStateName);

解释

您将片段添加到堆栈中,因此在返回时片段会从堆栈中弹出并且空容器可见。

注意:如果您想为片段指定标签名称,只需将您的这行代码 transaction.replace(R.id.main_fragment, fragment); 替换为 transaction.replace(R.id.main_fragment, fragment, backStateName);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2017-08-06
    • 2020-03-20
    • 2016-11-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    相关资源
    最近更新 更多