1. ホーム
  2. android

NavHostFragmentとしてのFragmentContainerView

2023-09-10 13:07:09

質問

を使用するように思われます。 FragmentContainerView を使用すると、すぐに動作しないように思えますが?

<androidx.fragment.app.FragmentContainerView
        class="androidx.navigation.fragment.NavHostFragment"
        android:id="@+id/fragment_nav_host"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_app" />

以下は fragment-ktx:1.2.0-rc01 を使っていますが、いつもこのエラーが発生します。

Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504

を使うだけで <fragment> で置き換えられるはずです。 FragmentContainerView .

私は何かを見逃しているのでしょうか、それとも誰かが FragmentContainerView として NavHostFragment ?

ありがとうございます。

どのように解決するのですか?

この不具合報告によるものです。 https://issuetracker.google.com/issues/142847973

これしかない(現状)。

val navHostFragment = supportFragmentManager
    .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

(Java)を使用します。

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager()
        .findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();