java - Backstack中找不到从xml添加的 fragment

标签 java android xml android-fragments

我正在 xml 文件中添加一个 fragment ,但我无法在后台堆栈中找到该 fragment 的实例。

下面是我的 xml 代码

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragOneContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <fragment class="com.myproject.fragments.fragmentname"
        android:id="@+id/frag"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:tag="inspectionSearch">

    </fragment>
</FrameLayout>

下面是我用来获取 fragment 列表的代码

FragmentManager fragmentManager = getFragmentManager();
List<Fragment> fragmentList = fragmentManager.getFragments();
        for(int i=0;i<fragmentList.size();i++){
            Log.d(TAG,"Fragment at "+i+" = "+fragmentList.get(i).getClass().getName());
        }

注意:我在 fragOneContainer 中动态添加的 fragment 出现在后台堆栈中。

如何获取我在 xml 中添加的 fragment 的实例?

最佳答案

从 xml 添加的 fragment 不会存储在 backstack 中。要点是,如果您通过 xml 添加 fragment ,它是静态分配的,您无法替换它。如果你想要backstack,那么通过java(或kotlin)动态添加这个 fragment

关于java - Backstack中找不到从xml添加的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55508483/

相关文章:

java - Java 中一个类的多个静态实例?

java - 将字符串中的字符替换为整数

android - 单击抽屉导航菜单中的项目后打开新 Activity

xml - 只定义一个结构并让它在 Go 中处理 XML 文件的所有内部元素?

java - 通过 dom4j XPath 奇怪的行为解析带有 namespace 的 xml

java - 在我们的相册中标记图像

java - o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool. Spring Boot + MySql

android - 多个 OnTouchListener

java - 从自定义 View Java 代码访问 AttributeSet

java - 如何使用 JAXB (Intellij Idea) 从多个 xsd 生成 Java 类