【发布时间】:2023-04-04 03:37:02
【问题描述】:
我有一个要保留的约束片段
<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()
但还是一样。
我做错了什么?
【问题讨论】:
-
您可以使用 FrameLayout 来替换/显示/隐藏片段。 developer.android.com/reference/android/widget/FrameLayout
-
我使用 ConstraintLayout 因为问题不是如何隐藏,问题是隐藏替换的片段,替换后它可以正常工作
标签: android kotlin replace fragment hide