Kotlin隐藏的替换片段不起作用

问题描述 投票:0回答:1

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

    <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()

但仍然相同。

我做错了什么?

android kotlin replace fragment hide
1个回答
0
投票

[当您呼叫replace时,他呼叫remove(fragment),然后呼叫add(int, fragment, string)。我认为您应该使用add方法代替replace并使用hideshow

来控制UI
© www.soinside.com 2019 - 2024. All rights reserved.