Android NavController error `нет текущего кода навигации` - PullRequest
1 голос
/ 07 ноября 2019

Мой файл макета представляет список магазинов (см. Скриншот).
enter image description here

Я установил прослушиватель щелчков в файле макета с привязкой данных следующим образом:

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

В своем фрагменте я определил этот класс следующим образом:

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 с этой ошибкой:

нет текущего навигационного кода

Есть идеи?

ОБНОВЛЕНИЕ: Я обнаружил ошибку в AOSP здесь . Однако не ясно, что происходит в этом случае.

1 Ответ

0 голосов
/ 09 ноября 2019

Для всех, кому интересно, я решил эту проблему. Линт в Android Studio Канарский велел мне использовать FragmentContainerView вместо Fragment в XML-макете активности NavHost. Вот что вызвало проблему. Как только я изменил тег NavGraph обратно на Fragment, он работает: enter image description here

...