Sembra che l'utilizzo di FragmentContainerViewnon funzioni subito?
<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" />
Ecco il mio codice che utilizza fragment-ktx:1.2.0-rc01e ricevo sempre questo errore:
Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504
Usando solo <fragment>opere e AFAIK, dovrebbe essere sostituito da FragmentContainerView.
Mi manca qualcosa o qualcuno è stato in grado di usarlo FragmentContainerViewcome NavHostFragment?
Grazie molto!
A causa di questa segnalazione di bug: https://issuetracker.google.com/issues/142847973
L'unico modo (attualmente) è quello di:
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
(Giava):
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager()
.findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();
Aggiornamento di agosto 2020
Ecco la soluzione consigliata dalla documentazione ufficiale di Android .
Versione Kotlin:
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Versione Java:
NavHostFragment navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
Cito il doc:
Quando si crea NavHostFragment utilizzando FragmentContainerView o se si aggiunge manualmente NavHostFragment alla propria attività tramite FragmentTransaction, il tentativo di recuperare il NavController in onCreate () di un'attività tramite Navigation.findNavController (Activity, @IdRes int) avrà esito negativo . Dovresti invece recuperare il NavController direttamente da NavHostFragment.
Il bug report segnalato da Ove Stoerholt non verrà corretto. Puoi vedere qui lo stato "Non risolverà (non fattibile)".
Quello che ho fatto è stato aspettare NavHostFragmentche aumentasse la sua vista:
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 (con lambda):
navigationView.post(() -> { // wait for NavHostFragment to inflate
navController = Navigation.findNavController(activity, R.id.nav_host_fragment);
NavigationUI.setupWithNavController(navView, navController);
navView.setNavigationItemSelectedListener(navItemSelectedListener);
});
Jana Duggar è stata aperta sulla sua ricerca dell'amore. Ecco tutto ciò che ha detto sull'argomento e sulla sua finestra di cinque anni per il matrimonio.
La star di 'Outlander' Sam Heughan ha recentemente rivelato cosa prenderà dal set per ricordare Jamie Fraser, il ruolo che lo ha reso una star.
"She Loves You" è stata scritta in un'ora, registrata in un giorno ed è stata la canzone dei Beatles con una delle loro migliori performance della loro carriera.
Dolly Parton e sua nonna Bessie avevano un rapporto speciale. Nonna Parton era molto malata, ma questo non ha impedito a Dolly di farle uno scherzo.
Si potrebbe pensare che la quercia o il noce americano siano resistenti, ma quando si tratta del legno più duro del mondo, non si avvicinano nemmeno.
L'oceano è pieno di bellezza, ma nasconde anche alcune delle creature marine più spaventose del pianeta. Molti di questi animali si nascondono molto al di sotto della superficie dell'oceano, nel mondo oscuro e ad alta pressione delle profondità marine.
Se stai combattendo contro nemici ostili o ti stai preparando per scenari PvP, conoscere i migliori incantesimi per le spade offerti da Minecraft può darti un vantaggio notevole. Incantare le spade ti permette di infliggere più danni, aumentare il numero di nemici che cadono e aumentare la durata della tua spada.
Quando si parla di paesi socialisti, spesso si immagina un sistema con il pieno controllo del governo e nessuna proprietà privata. Ma nella pratica, le economie socialiste variano notevolmente.
“Children” presenta un cameo di un grande nome e alcune notizie devastanti
Si dice che questo RAV4 sia in condizioni eccellenti ed è pronto per il gioco delle sedie musicali.
Le riprese dei droni hanno ripreso i vigili del fuoco che sembravano lottare per spegnere l'incendio.
Eyes of Wakanda si collega direttamente al MCU, oltre ad aggiornamenti su X-Men '97, What If..., Daredevil e altro ancora.
Il caporedattore di lunga data, entrato a far parte di Vogue America nel 1988, ha annunciato la notizia in una riunione dello staff la mattina di giovedì 26 giugno.
Ava Gardner avrebbe dovuto sposarsi con Mickey Rooney e Frank Sintra, e frequentare diverse altre star di Hollywood. Ecco uno sguardo alla storia sentimentale di Ava Gardner.
John Cleese ha sposato sua moglie, Jennifer Wade, nel 2012. Ecco tutto quello che c'è da sapere sulla moglie di John Cleese, Jennifer Wade.
Dev Patel ha incontrato la sua ragazza nel 2016 sul set di "Hotel Mumbai". Ecco tutto quello che c'è da sapere su Tilda Cobham-Hervey.
Mi colpisce Improvvisamente come spesso accade È di nuovo la via di mezzo <No, non quello nel pacifico tu marrone, quello al carnevale> Ogni titolo a voce alta…..
Nel 2022, con il rilascio di GPT-3, l'abilità di scrittura sembra diventare meno importante. Con l'intelligenza artificiale, anche le persone con una scrittura scadente possono generare personale di qualità.
Nel mondo frenetico e competitivo di oggi, la propria carriera gioca un ruolo significativo nella crescita personale, nella stabilità finanziaria e nella soddisfazione generale della vita. Tuttavia, molte persone si trovano intrappolate in un ciclo inesorabile di stagnazione e insoddisfazione, che si esauriscono gradualmente nella loro vita professionale.
La scorsa settimana ho notato un comunicato stampa, inviato tramite PressGazette (un sito Web di notizie sui media britannici). L'articolo annunciava che Acast, la società di hosting e pubblicità di podcast di Scandi, avrebbe guidato un consorzio di editori "probabilmente i più influenti" nel podcasting.