Android 导航 Controller 错误 `no current navigation code`

标签 android kotlin data-binding android-navigation

我的布局文件显示商店列表(见屏幕截图)。
enter image description here

我在我的布局文件中使用数据绑定(bind)设置了一个点击监听器,如下所示:

android:onClick="@{() -> storeCallback.onStoreClick(store)}"

在我的 fragment 中,我这样定义了这个类:

class StoreClick(val block: (StoreModel) -> Unit) {
    /**
     * Called when a store is clicked
     *
     * @param store the store that was clicked
     */
    fun onStoreClick(store: StoreModel) = block(store)
}

我在适配器中这样调用它:

StoreClick {
        // When a store is clicked this block or lambda will be called by MyAdapter
        val action =
                MyFragmentDirections.actionHomeToStoreDetailFragment(it.storeID)
        findNavController().navigate(action)
    })

配置更改之前一切正常。但是,旋转设备并点击适配器中的商店项目后,应用程序因 findNavController 崩溃并出现以下错误:

no current navigation code

有什么想法吗?

更新:我在 AOSP 中检测到错误 here .但是,目前尚不清楚这种情况下发生了什么。

最佳答案

对于任何有兴趣的人,我解决了这个问题。 Android Studio Canary 中的 Lint 告诉我在 NavHost Activity xml 布局中使用 FragmentContainerView 而不是 Fragment。这就是导致问题的原因。一旦我将 NavGraph 的封闭标记改回 Fragment,它就起作用了: enter image description here

关于Android 导航 Controller 错误 `no current navigation code`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755267/

相关文章:

android - 如何在 Jetpack Compose 中实现平移 + 缩放动画?

wpf - 在父项中访问子用户控件的数据上下文

c# - 自定义 DataGridViewCell 不触发数据源更改事件

android - 错误:(3)检索项目父项时出错:找不到与给定名称匹配的资源

android - 如何使用 Mapbox Android SDK 从本地 geojson 属性设置图标类型

java - 安卓工作室 : Text cursor disappears/gone after open some other class or pasting text in different classes

c# - 如何在 Asp.Net Core 中设置日期绑定(bind)的文化?

java - 从 Android (WiFi/GPRS) 执行 PHP 脚本的显着运行时差异

android - Kotlin Android Fragment recyclerView 和上下文问题

kotlin - 什么时候调用对象的 init block ?