web-dev-qa-db-ja.com

getGraph()を呼び出す前にsetGraph()を呼び出す必要があります

下部ナビゲーションもありますが、<fragment>タグ付きのFragmentContainerViewを指定すると、NavControllerがオンに設定されていないというエラーが表示され、その後 this の質問が投稿されて問題が修正されましたが、方向が変更され、下部ナビゲーションのアイテムを選択

Java.lang.IllegalStateException:getGraph()を呼び出す前にsetGraph()を呼び出す必要があります

FragmentContainer

<androidx.fragment.app.FragmentContainerView
        Android:id="@+id/nav_Host_fragment"
        Android:name="androidx.navigation.fragment.NavHostFragment"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation" /

フラグメントを見つける

val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_Host_fragment) as NavHostFragment
    val navController = navHostFragment.navController
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_classes, R.id.navigation_schedule, R.id.navigation_settings
        )
    )
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)
3
Jimale Abdi

ナビゲーションUI最新バージョンを使用:

// navigation
implementation "androidx.navigation:navigation-fragment:2.3.0-alpha02"
implementation "androidx.navigation:navigation-ui:2.3.0-alpha02"

新しいバージョンで修正されました