首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jetpack导航在活动之前初始化片段:因此ui操作崩溃

Jetpack导航在活动之前初始化片段:因此ui操作崩溃
EN

Stack Overflow用户
提问于 2021-07-10 23:56:51
回答 1查看 118关注 0票数 0

我将我的项目更新为kotlin 1.5.20和jetpack导航,如下所示

代码语言:javascript
运行
复制
    implementation "androidx.navigation:navigation-fragment-ktx:2.3.5"
    implementation "androidx.navigation:navigation-ui-ktx:2.3.5"

现在我的应用程序崩溃了。原因有点奇怪。在我的startDestination-Fragment中,我有活动的UI操作。例如,根据最后的分数,片段必须调整标题。所以这不是什么特别的事情。

应用程序崩溃是因为xml不能膨胀:

代码语言:javascript
运行
复制
     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

将片段包含到活动中是标准代码:

代码语言:javascript
运行
复制
 <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中放置了一条日志消息。我的日志显示了一个奇怪的生命周期:

代码语言:javascript
运行
复制
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

到目前为止,我的假设是活动首先初始化,然后是片段。我会期望日志以完全不同的顺序出现。“修复”是非常老套的。

代码语言:javascript
运行
复制
   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        Log.e("Lifecycle", "Create Game Fragment")
        lifecycleScope.launch {
           // delay(1)
            doActivityUIChanges()
        }

    }

当我使用delay(1)时,一切都正常。当我不使用延迟时,应用程序就会崩溃。

真的很奇怪。我是不是误解了生命周期?我真的希望能有另一种解决方案。我的修复不是很干净哈哈

EN

Stack Overflow用户

回答已采纳

发布于 2021-07-13 03:40:17

目前还不清楚为什么要替换的标签,但建议根据官方文档进行替换:https://developer.android.com/guide/navigation/navigation-getting-started

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68329342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档