J'ai récemment développé une petite application Android, mais j'ai dû faire face à un problème que je n'arrive pas à résoudre.Attribuer le bon fragment android à tour de rôle
Depuis que je suis sur un BottomNavigationView je dois initialiser mon fragment d'accueil comme celui-ci:
@Override
protected void onStart(){
super.onStart();
FragmentTransaction f = fm.beginTransaction();
f.replace(R.id.content, homeFragment).commit();
}
le remplacement se produit sur cette FrameLayout:
<FrameLayout
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0" />
Pourtant, cela soulève un petit bug: si Je fais pivoter l'appareil, le fragment est remis à mon homeFragment, quel que soit le courant.
Puisque je ne peux pas appeler directement mon
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//
}
J'ai quelques retournements: tryed
- J'ai tryed en utilisant un booléen isFragmentInitialized
- J'ai tryed décentralisant la fonction onNavigation dans un externe fonction setFragment privée qui a vérifié l'élément de menu sélectionné et appliqué le fragment correspondant
- J'ai essayé de démarrer directement avec homeFragment plutôt qu'avec la vue linéaire que j'utilise
Mais theese solutions apporte pas de chance:
le dernier se bloque après avoir allumé l'écran et sélectionnez la maison
les autres sont le résultat simplement dans la même situation avec mon initialisation standard.
Cela fonctionne beaucoup! Merci pour la réponse rapide et utile! – Tails128