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