[Android / Java] Configurer un bouton pour revenir à Fragment

introduction

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.

① Comment appeler depuis MainActivity

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);

② Comment appeler directement depuis Fragment

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);
  }

la différence

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

[Android / Java] Configurer un bouton pour revenir à Fragment
Android Donner facilement une «pression» sur un bouton
Configurez une interface graphique Java dans un thread séparé pour conserver le
Comment configurer le mappeur Android OU "Orma" (Kotlin)
Comment définir des constantes Java
Créer une méthode pour renvoyer le taux de taxe en Java
Comment configurer un proxy avec authentification dans Feign
Comment effectuer un processus spécifique lorsque le bouton de retour est enfoncé dans le fragment Android
Développement Android-Essayez d'afficher une boîte de dialogue-
[Ubuntu] Configurer un serveur Nukkit
[Wire Mock] Je souhaite configurer un serveur stub / simulé en Java et effectuer des tests E2E.
[Android] Convertir le code Java Android en Kotlin
Comment créer un tableau Java
[Android] Comment créer un fragment de dialogue
Étapes minimales pour configurer un environnement Ruby avec rbenv sur Ubuntu 20.04
Comment créer un résumé de calendrier Java
Convertir toutes les applications Android (Java) en Kotlin
[Introduction à Java] Comment écrire un programme Java
Comment créer un robot Discord (Java)
Comment configurer et utiliser kapt
[Java] Comment régler la date sur 00:00:00
[Android Studio] Transition d'écran par le bouton [Java]
[Android / Java] Changer d'événements par fragment d'affichage
Bouton [Ruby on Rails] pour revenir en haut
De Java à C et de C à Java dans Android Studio
Java (ensemble)
Notez que Junit 4 a été ajouté à Android Studio
Deux façons de démarrer un thread en Java + @
Bouton [Rails] pour revenir en haut de la page
Mémorandum pour nettoyer le code Ruby
[Android] Comment convertir une chaîne de caractères en resourceId
Connectez-vous à Aurora (MySQL) depuis une application Java
Comment afficher une page Web en Java
java j'ai essayé de casser un simple bloc
Pour devenir programmeur VB.net depuis une boutique Java
[Android] Comment détecter le changement de volume (= pression sur le bouton de volume)
Code pour échapper aux chaînes JSON en Java
Je l'ai fait en Java pour toujours rendre (a == 1 && a == 2 && a == 3) vrai
Essayez de créer un babillard en Java
Définir l'heure de LocalDateTime à une heure spécifique
[Android] Implémentez rapidement la fonction pour afficher le mot de passe
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Comment convertir un contrat de solidité en une classe de contrat Java
Histoire d'essayer de faire fonctionner le fichier JAVA
[Java] (pour MacOS) Méthode de définition du chemin de classe
Comment configurer et utiliser jEnv (Mac)
Java ajoute une zone de texte aux diapositives PowerPoint
Définir l'image de profil d'un utilisateur à l'aide de CarrierWave
Comment configurer JavaED Full Edition (pléiades)
[Android] Deux façons d'obtenir un adaptateur Bluetooth
[Rails] Comment créer un bouton de partage Twitter
[Android] Ordre correct pour définir le contexte dans Dao
Configurer un webhook dans l'application personnalisée de Shopify
Configurer un serveur virtuel Cent OS avec Vagrant
J'ai essayé de casser le bloc avec java (1)
Bitmap trop volumineux pour être téléchargé dans une texture en essayant de définir un grand Bitmap dans Android ImageView