Android 在使用FragmentContainerView添加的片段的onCreateView中,ViewGroup容器为空
上下文: 我正在使用Android 在使用FragmentContainerView添加的片段的onCreateView中,ViewGroup容器为空,android,kotlin,fragment,Android,Kotlin,Fragment,上下文: 我正在使用FragmentContainerView在我的XML中添加一个Fragment 我收到测试人员的反馈,当他们从后台状态启动应用程序时,片段不会显示 为了见证这个错误,我启用了开发者选项“不保留活动”。 实际上,有了这个选项,片段将在第一次启动时正确显示。然后,我将应用程序放在后台,然后再次启动->片段消失 代码: 这是带有我的FragmentContainerView的XML: <?xml version="1.0" encoding="
FragmentContainerView
在我的XML中添加一个Fragment
我收到测试人员的反馈,当他们从后台
状态启动应用程序时,片段
不会显示
为了见证这个错误,我启用了开发者选项“不保留活动”。实际上,有了这个选项,
片段
将在第一次启动时正确显示。然后,我将应用程序放在后台,然后再次启动->片段
消失
代码: 这是带有我的
FragmentContainerView
的XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainTileContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_main_tile"
android:name="com.app.fragment.FragmentMainTile"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.fragment.app.FragmentContainerView>
</FrameLayout>
在我的片段的onCreateView
方法中有断点,ViewGroup
是我第一次启动的FragmentContainerView
,从后台启动后为空
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_main_container, container, false)
}
我以为FragmentContainerView
会为我处理片段操作:
FragmentContainerView将执行一次性操作:
Creates a new instance of the Fragment
Calls Fragment.onInflate(Context, AttributeSet, Bundle)
Executes a FragmentTransaction to add the Fragment to the appropriate FragmentManager
我应该在片段中处理保存/恢复状态吗?有人能解释这种行为吗?您是否在某个地方重写了
onSaveInstanceState()
,而忘记调用super.onSaveInstanceState()
?这是碎片在你身上“消失”的一个常见原因。此外,将wrap\u内容
父项与match\u父项
子项相结合是可疑的。我不希望这会导致一个空的容器
参数,但仍然如此。我没有覆盖onSaveInstanceState
。父项中的wrap\u内容
与match\u父项
子项的组合是因为我的ViewPager。ViewPager
中的所有子片段
都有特定的高度,我希望父容器相应地调整大小。您是否覆盖了某个地方的onSaveInstanceState()
而忘记调用super.onSaveInstanceState()
?这是碎片在你身上“消失”的一个常见原因。此外,将wrap\u内容
父项与match\u父项
子项相结合是可疑的。我不希望这会导致一个空的容器
参数,但仍然如此。我没有覆盖onSaveInstanceState
。父项中的wrap\u内容
与match\u父项
子项的组合是因为我的ViewPager。ViewPager
中的所有子片段
都有特定的高度,我希望父容器相应地调整大小。
Creates a new instance of the Fragment
Calls Fragment.onInflate(Context, AttributeSet, Bundle)
Executes a FragmentTransaction to add the Fragment to the appropriate FragmentManager