Sobes.tech
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.