val navHostFragment = supportFragmentManager
.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
sicherlich besser nur zu verwenden fragmentanstatt sich Gedanken darüber zu machen, dass Sie daran denken müssen, diese Problemumgehung zu verwenden? Wir haben Abstürze gesehen, aber nur bei einigen Benutzern, komisch …
– hmac
19. März 2020 um 9:40 Uhr
@hmac In der verlinkten Ausgabe wird diskutiert, warum Sie Fragment nicht verwenden sollten: issuetracker.google.com/issues/142847973#comment15: Der Lint-Check ist genau deshalb da, weil man unbedingt auf FragmentContainerView umstellen sollte.
– Banane
10. August 2020 um 14:18 Uhr
zeigt nichts an. Es ist seltsam, dass ich bei der Verwendung von feststecke!
– Junia Montana
9. November 2020 um 4:44 Uhr
was wir mit navController zu tun haben, weil die Variable unbenutzt ist
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Beim Erstellen des NavHostFragments mit FragmentContainerView oder wenn Sie das NavHostFragment manuell über eine FragmentTransaction zu Ihrer Aktivität hinzufügen, versuchen Sie es Rufen Sie den NavController ab in onCreate() einer Aktivität via Navigation.findNavController(Activity, @IdRes int) schlägt fehl. Sie sollten den NavController stattdessen direkt aus dem NavHostFragment abrufen.
Der Fehlerbericht, der von gemeldet wurde Ove Störholt wird nicht behoben. Du kannst sehen hier den Status „Wird nicht behoben (undurchführbar)“.
Während die ursprüngliche Aufgabe als “Won’t Fix (Infeasible)” gekennzeichnet war, haben sie einen Link zu einer anderen Aufgabe erstellt, damit sie vielleicht planen, das Problem doch zu beheben: issuetracker.google.com/issues/143145612
– Scharf
25. Oktober 2020 um 10:04 Uhr
Lungenentzündung
Was ich tat, war, auf die zu warten NavHostFragment seine Ansicht aufzublähen:
Kotlin:
super.onCreate(savedInstanceState)
// Set up the form and list.
setContentView(R.layout.activity_xxx)
// Set up navigation - action bar and sidebar.
/// Let the navigation view check/uncheck the menu items.
nav_view.post { // wait for NavHostFragment to inflate
val navController = findNavController()
nav_view.setupWithNavController(navController)
nav_view.setNavigationItemSelectedListener(this)
}
Java8 (mit Lambda):
navigationView.post(() -> { // wait for NavHostFragment to inflate
navController = Navigation.findNavController(activity, R.id.nav_host_fragment);
NavigationUI.setupWithNavController(navView, navController);
navView.setNavigationItemSelectedListener(navItemSelectedListener);
});
Ich hatte verwendet <fragment> um den Fehler zu vermeiden. Aber ich war beunruhigt über einen weiteren unbekannten Fehler. Also habe ich die späte Antwort von @Pnemonic gefunden und versucht, sie zu verwenden <FragmentContainerView>. Das Problem wurde behoben, danke!
– hat
25. Mai 2020 um 6:36 Uhr
Galih Al
Ich habe das gleiche Problem bei der Verwendung von Kotlin:
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Fügen Sie es einfach hinzu
setupActionBarWithNavController(navController)
verwenden android:name Anstatt von class. funktioniert.