Kotlin皮革替换的碎片不起作用

时间:2019-11-05 14:42:49

标签: android kotlin replace fragment hide

我有一个要保留的约束片段

    <fragment
    android:id="@+id/fr_test"
    android:name="com.test.FragmentTest"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

我使用交易隐藏/显示它以及全部。效果很好

fm.beginTransaction().hide(mainActivity.fr_test).commit()
fm.beginTransaction().show(mainActivity.fr_test).commit()

我使用事务来重新创建片段,以使相同的容器使用相同的约束

fm.beginTransaction().replace(R.id.mainActivity.fr_test, FragmentTest).commit()

但是,如果现在我尝试使用与之前相同的引用来隐藏/显示片段,则它什么也不做。我想丢失了引用,但我不知道如何找到它们。我试图这样保存引用:

fragRef = FragmentTest()
viewsManager.fm.beginTransaction().replace(R.id.fr_test, fragRef).commit()

然后使用:

fm.beginTransaction().hide(mainActivity.fragRef).commit()
fm.beginTransaction().show(mainActivity.fragRef).commit()

但仍然一样。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

当您致电replace时,他致电remove(fragment),并在致电add(int, fragment, string)之后。我认为您应该使用add方法而不是replace,并使用hideshow

来控制UI