Dans l'installation du bouton retour sur le fragment J'avais l'habitude de l'écrire en le définissant dans l'activité parent et en l'appelant. Il est préférable d'appeler le contenu directement à partir de chaque Fragment sans le mettre en Activité Comme l'a souligné un ingénieur vétéran, je laisserai les deux modèles sous forme de mémorandum.
MainActivity.java
public class MainActivity extends AppCompatActivity {
//Définir le bouton de retour
public void setupBackButton(boolean enableBackButton) {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(enableBackButton);
}
}
Fragment1.java
//Appelez onCreateView
MainActivity activity = (MainActivity) getActivity();
activity.setupBackButton(true);
setHasOptionsMenu(true); //Paramètres requis pour utiliser ActionBar avec Fragment
Fragment2.java
//Appelez onCreateView
MainActivity activity = (MainActivity) getActivity();
activity.setupBackButton(false);
Fragment1.java
//Appelez onCreateView
.setupBackButton()
setHasOptionsMenu(true); //Paramètres requis pour utiliser ActionBar avec Fragment
//Défini dans la classe Fragment
public void setupBackButton() {
AppCompatActivity activity = (AppCompatActivity) getActivity();
ActionBar actionBar = activity.getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
Fragment2.java
//Appelez onCreateView
.hideBackButton()
//Défini dans la classe Fragment
public void hideBackButton() {
AppCompatActivity activity = (AppCompatActivity) getActivity();
ActionBar actionBar = activity.getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
}
Cela a la même apparence à première vue, mais la source d'acquisition d'Activité est différente! ①MainActivity activity = (MainActivity) getActivity(); ②AppCompatActivity activity = (AppCompatActivity) getActivity();
On dit qu'il vaut mieux arrêter d'écrire sur la prémisse d'une activité spécifique (activité principale dans ce cas). Plus il y a de classes prérequises (classes que vous définissez), plus il est difficile pour votre code d'apporter des modifications en toute sécurité.
Si la destination d'acquisition est AppCompatActivity, il s'agit d'une source d'héritage, elle n'est donc presque jamais modifiée et elle est hautement sûre. Je veux être un ingénieur fort capable de mettre en œuvre dans une perspective d'avenir.
Recommended Posts