Navegación de Android: el fragmento en la misma actividad salta a otro fragmento

prefacio

Recientemente comencé a aprender android Aunque la configuración de la interfaz es muy similar a la web, muchos detalles son completamente diferentes. Escribí una APLICACIÓN, necesito saltar de un Fragmento a otro

Implementación

Crear una Navegación (mapa de navegación)

Debajo de la carpeta res en el proyecto de Android - clic derecho - nuevo - Archivo de recursos de Android - Tipo de recurso seleccione Navegación

 Se generará automáticamente una carpeta de navegación en el proyecto, y el archivo xml recién creado se colocará en ella

Después de generar, haga clic en la página Diseño, haga clic para agregar dos Fragmentos, apunte la flecha en el lado del Fragmento al Fragmento al que se saltará, vuelva a la página Código después de la configuración, podemos ver que hay una <acción > etiqueta, y el id dentro es nuestro seguimiento. El id que necesita ser navegado.

 La página de códigos es la siguiente:

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

Crear un NavController en MainActivity

actividad_principal.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

Obtenga el controlador de navegación para implementar la barra de navegación en la parte inferior de la página

// 获取页面上的底部导航栏控件
        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);

Implementar el salto en el Fragmento hijo

Establezca un botón en el Fragmento secundario, que puede saltar a otro Fragmento después de hacer clic

Aquí, el valor de id en el método de navegación () es el valor de id en nuestra etiqueta <action> anterior

Por ejemplo: haga clic en el botón en la página de inicio para saltar a un fragmento de diálogo

Parte del código es el siguiente: (se debe definir un control ImageButton en el archivo xml, que se omite aquí)

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

Supongo que te gusta

Origin blog.csdn.net/TDSSS/article/details/126387959
Recomendado
Clasificación