【发布时间】:2021-01-20 04:46:58
【问题描述】:
我很好奇我在使用导航组件时遇到的问题,特别是在托管 NavHostFragment 时。我有一个带有几个片段的单 Activity 本机应用程序。我在启动器的 xml 中,将 <fragment> 替换为 <androidx.fragment.app.FragmentContainerView>。
初始实施已按预期工作了一年。本周引入 FragmentContainerView 时,起始目的地的屏幕在启动时不会呈现。然而,我观察到证明从网络和缓存成功传入数据的日志。在此状态下,只有通过旋转设备触发配置更改才能按预期呈现 UI。
我的 AndroidX NavigationFragmentKtx 和 NavigationUiKtx 依赖项是版本 2.3.2。相关文件的缩写。有什么突出我错过的吗?任何想法表示赞赏。
launcher_activity.xml
<androidx.fragment.app.FragmentContainerView
android:id="@+id/launcher_navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/nav_graph" />
LauncherActivity.kt
class LauncherActivity : AppCompatActivity(R.layout.launcher_activity) {
private lateinit var viewBinding: LauncherActivityBinding
private val navController: NavController by lazy {
val navHost = supportFragmentManager.findFragmentById(
R.id.launcher_navHost
) as NavHostFragment
navHost.navController
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewBinding = LauncherActivityBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
}
}
【问题讨论】:
标签: android android-fragments android-activity android-architecture-navigation android-viewbinding