Junior
¿Cómo enlazar múltiples pantallas en una aplicación?
sobes.tech AI
Respuesta de la IA
NavComponent (componente de navegación) de Android Jetpack.
- Fragment Nav Component: Para aplicaciones basadas en fragmentos. Define el gráfico de navegación con destinos (pantallas) y acciones (transiciones).
- Navigation Actions: Definen cómo ir de un destino a otro. Pueden contener argumentos.
- Safe Args: Plugin de Gradle para generar código que garantiza una navegación segura con argumentos.
- Navigation Graph: Recurso XML que describe todos los destinos y sus conexiones.
<!-- res/navigation/nav_graph.xml -->
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="com.example.HomeFragment"
android:label="Home"
tools:layout="@layout/fragment_home">
<action
android:id="@+id/action_homeFragment_to_detailFragment"
app:destination="@id/detailFragment" />
</fragment>
<fragment
android:id="@+id/detailFragment"
android:name="com.example.DetailFragment"
android:label="Detail"
tools:layout="@layout/fragment_detail">
<argument
android:name="itemId"
app:argType="integer" />
</fragment>
</navigation>
// Navegación usando Safe Args
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternativas (menos preferidas):
- Intent: Método clásico para cambiar entre Activity. Menos flexible y más difícil de gestionar en escenarios complejos.
- FragmentTransaction: Para gestionar manualmente la adición, eliminación y reemplazo de fragmentos. Requiere más código y es propenso a errores.
- Soluciones personalizadas: Implementaciones propias de gestión de pantallas, a menudo innecesariamente complejas.