Перейдите к фрагменту с помощью NavController из уведомления - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно перейти к фрагменту, когда пользователь щелкает уведомление.

Это прекрасно работает, если приложение работает. Однако, когда я закрываю приложение и затем нажимаю на уведомление, оно вылетает с таким сообщением об ошибке:

2020-04-24 18:06:49.607 14832-14832/com.package.name E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.package.name, PID: 14832
java.lang.IllegalStateException: no current navigation node
    at androidx.navigation.NavController.navigate(NavController.java:824)
    at androidx.navigation.NavController.navigate(NavController.java:804)
    at androidx.navigation.NavController.navigate(NavController.java:790)
    at androidx.navigation.NavController.navigate(NavController.java:985)
    at com.package.name.core.navigation.NavigationActivity.handleNewIntent(NavigationActivity.kt:358)
    at com.package.name.core.navigation.NavigationActivity.onPostCreate(NavigationActivity.kt:257)
    at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1385)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3088)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1906)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6863)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Мой код выполняет навигацию:

navController.navigate(
                navigateToFragment(
                    someParam = "some value",
                    someOtherParam = "other value"
                )
            )

Как создается мой navController

private val navController: NavController by lazy {
    Navigation.findNavController(this, R.id.nav_host_fragment)
}

Я полагаю, это связано с неправильной инициализацией моего navController? Любые идеи, как это исправить / как это правильно сделать?

1 Ответ

0 голосов
/ 27 апреля 2020

Я нашел решение.

Чего не хватало, так это установки пункта назначения для моего navcontroller, например:

  graph = navGraph.apply { startDestination = destinationId }
  currentDestination?.let { applyDestinationPropertiesToToolbar(it) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...