Android Kotlin隐藏替换的碎片don';行不通
我有一个带有约束的片段,我想保留它Android Kotlin隐藏替换的碎片don';行不通,android,kotlin,replace,fragment,hide,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().replace(
<fragment
android:id="@+id/fr_test"
android:name="com.test.FragmentTest"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
我使用事务重新创建片段,保持相同的容器使用相同的约束
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()
但仍然如此
我做错了什么?当你调用
replace
时,他调用remove(fragment)
,然后调用add(int,fragment,string)
。我认为您应该使用add
方法,而不是replace
,并使用hide
和show
控制UI。您可以使用框架布局来替换/显示/隐藏片段。我使用ConstraintLayout是因为问题不在于如何隐藏,问题在于隐藏替换的片段,在替换成功后,我知道,但如果我只添加我不删除旧片段,我的问题是,有时我想隐藏/显示,有时我想重置片段以便重新创建。隐藏/显示工作正常,直到我更换。然后引用丢失,我无法显示/隐藏如果您只需要显示/隐藏,请调用此函数并添加新片段。如果需要重置,请在添加之前单独调用remove。否?我想这将是事实,我的第一个片段不是用add动态添加的,而是直接用xml添加的。可能我应该从xml中删除它并动态添加,这样引用就不会丢失。我以后再试试。我这样做是为了重用容器中片段的约束
fm.beginTransaction().hide(mainActivity.fragRef).commit()
fm.beginTransaction().show(mainActivity.fragRef).commit()