[Android / Java] Changer d'événements par fragment d'affichage

introduction

Je développais une application avec Android Studio (java), et il y avait une scène où je voulais implémenter "la commutation du processus lorsque le bouton retour du terminal est enfoncé en fonction du fragment affiché". Je publierai ce que j'ai appris à ce moment-là.

Ce que j'ai appris

Partie décrite du code

Afficher le fragment de l'activité

Afficher les fragments dans ce fichier xml d'activité

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/fl_activity_main"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Le traitement de l'affichage des fragments est effectué de cette manière

MainActivity.java


//Une méthode pour afficher le fragment spécifié. Transmettez l'instance du fragment que vous souhaitez afficher dans le fragment d'argument.
    public void showFragment(Fragment fragment, FragmentManager fragmentManager) {

        fragmentManager
                .beginTransaction()
                .replace(R.id.fl_activity_main, fragment)
                .addToBackStack(null)
                .commit();
    }

Obtenez le fragment affiché et effectuez un événement (processus)

Cette fois, à titre d'exemple, si le fragment affiché lors de l'appui sur le bouton retour du terminal est FooFragment '' ou BarFragment '', l'activité est terminée.

MainActivity.java


// onBackPressed()Est une méthode appelée lorsque le bouton retour du terminal est enfoncé
@Override
    public void onBackPressed() {
        //Obtenez le fragment actuellement affiché ici
        // findFragmentById()Remplacez l'affichage du fragment dans l'argument de()L'identifiant de l'élément de mise en page à afficher avec (conteneur))Mettez dedans.
        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fl_activity_main);
        
        //Terminer l'activité lors de l'affichage de FooFragment ou BarFragment(finish)
        if (fragment instanceof FooFragment || fragment instanceof BarFragment) {
            finish();
        }
        super.onBackPressed();
    }

finalement

Il était étonnamment facile d'implémenter comment déterminer quel fragment est affiché. Nous continuerons de produire activement ce que nous avons appris.

Matériel de référence

Merci beaucoup! !!

Premier événement Fragment d'Android

Recommended Posts

[Android / Java] Changer d'événements par fragment d'affichage
Affichage saisonnier avec commutateur Java
[Android Studio] Transition d'écran par le bouton [Java]
Afficher le texte caractère par caractère dans Surface View sur Android
Instruction de commutation Java
[Android / Java] Configurer un bouton pour revenir à Fragment
[Android] Affichage de la boîte de dialogue de révision
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment