Этот код иногда приводит к сбою с IllegalStateException. Я нашел это в Google Play Console и не могу воспроизвести.
val listener = object : GameHistoryAdapter.RecyclerViewOnClickListener {
override fun onClick(v: View?, position: Int) {
val selectedItem = viewModel.getHistory()[position]
if (selectedItem is RandomWords) {
val resultViewModel: RandomWordsResultViewModel by hiltNavGraphViewModels(R.id.main_navigation)
resultViewModel.setRandomWordsResult(selectedItem)
resultViewModel.isGameCompleted = false
findNavController().navigate(R.id.action_gameHistoryFragment_to_gameOnTimeResultFragment)
} else if (selectedItem is OwnText) {
val resultViewModel : OwnTextResultViewModel by hiltNavGraphViewModels(R.id.main_navigation)
resultViewModel.setOwnTextResult(selectedItem)
resultViewModel.setTypedWordsList(emptyList())
findNavController().navigate(R.id.action_gameHistoryFragment_to_ownTextResultFragment)
}
}
}
Я предполагал, что это как-то связано со смертью активности/процесса. Мне удалось протестировать смерть активности, и все работало отлично.
В документации метода Navigation() сказано:
@throws IllegalStateException, если текущий узел навигации отсутствует
Как мне справиться с таким поведением? Приложение предназначено для одного действия с навигацией Jetpack. Проблема возникает в нескольких местах проекта.
Exception java.lang.IllegalArgumentException:
at androidx.navigation.NavController.navigate (NavController.kt:1540)
at androidx.navigation.NavController.navigate (NavController.kt:1472)
at androidx.navigation.NavController.navigate (NavController.kt:1454)
at androidx.navigation.NavController.navigate (NavController.kt:1437)
at com.xxx.yyy.ui.fragment.history.GameHistoryFragment$onViewCreated$listener$1.onClick (GameHistoryFragment.kt:41)
at com.xxx.yyy.adapter.history.GameHistoryAdapter$RandomWordsViewHolder.onClick (GameHistoryAdapter.kt:90)
at android.view.View.performClick (View.java:7448)
at android.view.View.performClickInternal (View.java:7421)
at android.view.View.access$3700 (View.java:838)
at android.view.View$PerformClick.run (View.java:28870)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:201)
at android.os.Looper.loop (Looper.java:288)
at android.app.ActivityThread.main (ActivityThread.java:7941)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:553)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
Подробнее здесь: https://stackoverflow.com/questions/790 ... eexception
FindNavController().navigate() выдает исключение IllegalStateException ⇐ Android
Форум для тех, кто программирует под Android
1727373573
Anonymous
Этот код иногда приводит к сбою с IllegalStateException. Я нашел это в Google Play Console и не могу воспроизвести.
val listener = object : GameHistoryAdapter.RecyclerViewOnClickListener {
override fun onClick(v: View?, position: Int) {
val selectedItem = viewModel.getHistory()[position]
if (selectedItem is RandomWords) {
val resultViewModel: RandomWordsResultViewModel by hiltNavGraphViewModels(R.id.main_navigation)
resultViewModel.setRandomWordsResult(selectedItem)
resultViewModel.isGameCompleted = false
findNavController().navigate(R.id.action_gameHistoryFragment_to_gameOnTimeResultFragment)
} else if (selectedItem is OwnText) {
val resultViewModel : OwnTextResultViewModel by hiltNavGraphViewModels(R.id.main_navigation)
resultViewModel.setOwnTextResult(selectedItem)
resultViewModel.setTypedWordsList(emptyList())
findNavController().navigate(R.id.action_gameHistoryFragment_to_ownTextResultFragment)
}
}
}
Я предполагал, что это как-то связано со смертью активности/процесса. Мне удалось протестировать смерть активности, и все работало отлично.
В документации метода Navigation() сказано:
@throws IllegalStateException, если текущий узел навигации отсутствует
Как мне справиться с таким поведением? Приложение предназначено для одного действия с навигацией Jetpack. Проблема возникает в нескольких местах проекта.
Exception java.lang.IllegalArgumentException:
at androidx.navigation.NavController.navigate (NavController.kt:1540)
at androidx.navigation.NavController.navigate (NavController.kt:1472)
at androidx.navigation.NavController.navigate (NavController.kt:1454)
at androidx.navigation.NavController.navigate (NavController.kt:1437)
at com.xxx.yyy.ui.fragment.history.GameHistoryFragment$onViewCreated$listener$1.onClick (GameHistoryFragment.kt:41)
at com.xxx.yyy.adapter.history.GameHistoryAdapter$RandomWordsViewHolder.onClick (GameHistoryAdapter.kt:90)
at android.view.View.performClick (View.java:7448)
at android.view.View.performClickInternal (View.java:7421)
at android.view.View.access$3700 (View.java:838)
at android.view.View$PerformClick.run (View.java:28870)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:201)
at android.os.Looper.loop (Looper.java:288)
at android.app.ActivityThread.main (ActivityThread.java:7941)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:553)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
Подробнее здесь: [url]https://stackoverflow.com/questions/79028608/findnavcontroller-navigate-throws-illegalstateexception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия