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
,它就起作用了:
我的布局文件显示商店列表(见屏幕截图)。
我在我的布局文件中使用数据绑定设置了一个点击监听器,如下所示:
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
,它就起作用了: