Android NavController 错误`没有当前导航代码`

Android NavController error `no current navigation code`

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

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

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

在我的片段中,我这样定义 class:

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,它就起作用了: