gpt4 book ai didi

android - 弹出 fragment 并再次替换为同一 fragment 时显示空白页面

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:20 39 4
gpt4 key购买 nike

我有 3 个 fragment ,Frag_A、Frag_B 和 Frag_C。

我的导航逻辑是: Frag_A ==> Frag_B ==> Frag_C 。那是 Frag_A 首先被添加到布局中,所以,第一次,Frag_A 显示在屏幕上,然后,如果用户按下 Next 按钮,Frag_A 被 Frag_B 替换,现在 Frag_B 显示在屏幕上,如果用户按下 Next 按钮, Frag_B 被 Frag_C 替换,因此 Frag_C 显示在屏幕上。

此时我的代码一切正常。

切换到下一个 fragment 的方法:

//here, argument 'fragment' is either Frag_B or Frag_C
public void showFragment(Fragment fragment){
FragmentManager fragMgr = activity.getSupportFragmentManager();
FragmentTransaction fragTrans = fragMgr.beginTransaction();

fragTrans.replace(R.id.frag_placeholder, fragment, fragmentName);
fragTrans.addToBackStack(null);

int transId = fragTrans.commit();
fragMgr.executePendingTransactions();

}

Activity的布局文件(Activity启动时将Frag_A添加到frag_placeholder中):

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>

<FrameLayout
android:id="@+id/frag_placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</merge>

但是,在显示 Frag_C 之后,如果我通过按下物理后退按钮弹出 Frag_C 并调用 showFragment(Frag_C) 方法在我之后再次显示 Frag_C代码检测到物理按钮被按下,我得到一个空白页面 显示在屏幕上。为什么以及如何解决?

================解释=====================

我在上面说过“*在我的代码检测到物理按钮被按下后立即再次显示 Frag_C*”,这就是我的意思:

在 Activity 中:

@Override
public void onBackPressed() {
super.onBackPressed();
//I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again.
}

最佳答案

根据@Luksprog 的评论,我发现如果我创建一个 Frag_C新实例而不是总是使用同一个实例,空白页问题就会得到解决.

关于android - 弹出 fragment 并再次替换为同一 fragment 时显示空白页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16664198/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com