我将我的项目更新为kotlin 1.5.20和jetpack导航,如下所示
implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
implementation "androidx.navigation:navigation-ui-ktx:2.3.5"现在我的应用程序崩溃了。原因有点奇怪。在我的startDestination-Fragment中,我有活动的UI操作。例如,根据最后的分数,片段必须调整标题。所以这不是什么特别的事情。
应用程序崩溃是因为xml不能膨胀:
Caused by: android.view.InflateException: Binary XML file line #83: Error inflating class fragment
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference将片段包含到活动中是标准代码:
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
<!-- ... some- constraint stuff -->
app:navGraph="@navigation/nav_graph" />我在我的活动中的onCreate中和片段中的onViewCreated中放置了一条日志消息。我的日志显示了一个奇怪的生命周期:
2021-07-10 17:42:08.097 28021-28021/com.x E/Lifecycle: Create Game Fragment
2021-07-10 17:42:08.141 28021-28021/com.x E/Lifecycle: Create Game Holder Activity到目前为止,我的假设是活动首先初始化,然后是片段。我会期望日志以完全不同的顺序出现。“修复”是非常老套的。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Log.e("Lifecycle", "Create Game Fragment")
lifecycleScope.launch {
// delay(1)
doActivityUIChanges()
}
}当我使用delay(1)时,一切都正常。当我不使用延迟时,应用程序就会崩溃。
真的很奇怪。我是不是误解了生命周期?我真的希望能有另一种解决方案。我的修复不是很干净哈哈
发布于 2021-07-13 03:40:17
目前还不清楚为什么要替换的标签,但建议根据官方文档进行替换:https://developer.android.com/guide/navigation/navigation-getting-started
https://stackoverflow.com/questions/68329342
复制相似问题