4

私は単一のActivityアプリケーションを持っています。Navigation graph考えられるすべての宛先を含む1 つのファイルを作成しました( Fragment)。

Activity layoutのみが含まれ<fragment/>ている必要があります。

BottomNavigationViewユーザーがすべての重要な目的地 (そのうちの 3 つ) に移動できる場所を含むメインフラグメントがあります。

BottomNavigationView公式ドキュメントの多くのチュートリアルまたはイベントで説明されているように を実装すると、 Activity. したがって、 はBottomNavigationViewではなく に含まれているため、 は表示されFragmentなくなりましたActivitylayoutメインの Fragment で右を膨らませたい。

Navigation graphメイン Fragment に固有の別の を使用する必要がありますか? クラシックを使用する必要がありますかListener(ただし、を使用するすべての関心が失われますNavigation graph) ? 私が知らない解決策はありますか?

どうすれば実装できますか? 2 つの異なる を作成しようとしましNavigation graphたが、設定できませんBottomNavigationView

4

1 に答える 1

5

答え:

Navigation graphアクセスしたい宛先を含む秒を作成BottomNavigationViewします。

を含むフラグメントに、適切な IDBottomNavigationViewを必ず挿入してください。FragmentContainerView

次に、この回答のおかげで、簡単に実装できます。

これを使用して、ネストされた NavHost を参照してください。

val nestedNavHostFragment = childFragmentManager.findFragmentById(R.id.bottom_nav_host) as? NavHostFragment

val navController = nestedNavHostFragment?.navController

val bottomNavigationView = view.findViewById<BottomNavigationView>(R.id.bottom_navigation)

if (navController != null) {
    bottomNavigationView.setupWithNavController(navController)
} else {
    throw RuntimeException("Controller not found")
}
于 2020-04-30T17:38:04.217 に答える