Junior
Come collegare più schermate in un'applicazione?
sobes.tech AI
Risposta dell'AI
Componente NavComponent (componente di navigazione) di Android Jetpack.
- Fragment Nav Component: Per applicazioni basate su fragment. Definisce il grafico di navigazione con destinazioni (schermate) e azioni (transizioni).
- Navigation Actions: Determinano come passare da una destinazione all'altra. Possono contenere argomenti.
- Safe Args: Plugin Gradle per generare codice che garantisce una navigazione sicura con argomenti.
- Navigation Graph: Risorsa XML che descrive tutte le destinazioni e le connessioni.
<!-- 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>
// Navigazione usando Safe Args
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternatives (meno preferite):
- Intent: Metodo classico per passare tra Activity. Meno flessibile e più complesso da gestire in scenari complessi.
- FragmentTransaction: Per gestire manualmente l'aggiunta, la rimozione e la sostituzione dei fragment. Richiede più codice ed è soggetto a errori.
- Soluzioni personalizzate: Implementazioni proprie di gestione degli schermi, spesso inutilmente complesse.