Navigation Android - le fragment de la même activité passe à un autre fragment

avant-propos

J'ai récemment commencé à apprendre Android Bien que les paramètres de l'interface soient très similaires au Web, de nombreux détails sont complètement différents. J'ai écrit une APP, j'ai besoin de passer d'un fragment à un autre

Mise en œuvre

Créer une navigation (carte de navigation)

Sous le dossier res dans le projet Android - clic droit - nouveau - Fichier de ressources Android - Type de ressource sélectionnez Navigation

 Un dossier de navigation sera automatiquement généré dans le projet, et le fichier xml nouvellement créé y sera placé

Après la génération, cliquez sur la page de conception, cliquez pour ajouter deux fragments, pointez la flèche sur le côté du fragment vers le fragment vers lequel sauter, revenez à la page de code après le réglage, nous pouvons voir qu'il y a une <action > tag, et l' id à l'intérieur est notre suivi L'id qui doit être parcouru.

 La page Code est la suivante :

<fragment
        android:id="@+id/navigation_today"
        android:name="com.tdsss.healthdemo1.fragment.HomeFragment"
        android:label="今天"
        tools:layout="@layout/fragment_home" >
        <action
            android:id="@+id/action_navigation_today_to_editStepDialogFragment"
            app:destination="@id/editStepDialogFragment" />
    </fragment>

Créer un NavController dans MainActivity

activity_main.xml

<fragment
        android:id="@+id/nav_host"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@id/nav_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/step_navigation" />

MainActivity.java

Obtenez le contrôleur de navigation pour implémenter la barre de navigation en bas de la page

// 获取页面上的底部导航栏控件
        BottomNavigationView navView = findViewById(R.id.nav_view);
        // 配置navigation与底部菜单之间的联系
        // 底部菜单的样式里面的item里面的ID与navigation布局里面指定的ID必须相同,否则会出现绑定失败的情况
        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
                R.id.navigation_today,R.id.navigation_history,R.id.navigation_health,R.id.navigation_mine)
                .build();
        // 建立fragment容器的控制器,这个容器就是页面的上的fragment容器
        NavController navController = Navigation.findNavController(this, R.id.nav_host);
// 启动
        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
        NavigationUI.setupWithNavController(binding.navView, navController);

Implémenter le saut dans le fragment enfant

Définissez un bouton dans le fragment enfant, qui peut passer à un autre fragment après avoir cliqué

Ici, la valeur id dans la méthodenaviguer() est la valeur id dans notre balise <action> ci-dessus

Par exemple : cliquez sur le bouton de la page d'accueil pour accéder à une boîte de dialogue Fragment

Une partie du code est la suivante : (un contrôle ImageButton doit être défini dans le fichier xml, qui est omis ici)

HomeFragment.java


private ImageButton editStepButton;
private Activity mainActivity;
...
mainActivity = getActivity();
editStepButton = root.findViewById(R.id.edit_step_icon);
editStepButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Navigation.findNavController(mainActivity,R.id.nav_host).navigate(R.id.action_navigation_today_to_editStepDialogFragment);
            }
        });

Je suppose que tu aimes

Origine blog.csdn.net/TDSSS/article/details/126387959
conseillé
Classement