Junior
Cum se leagă mai multe ecrane într-o aplicație?
sobes.tech AI
Răspuns de la AI
Componente NavComponent (componenta de navigare) din Android Jetpack.
- Fragment Nav Component: Pentru aplicații bazate pe fragmente. Definește graficul de navigație cu destinații (ecrane) și acțiuni (tranziții).
- Navigation Actions: Determină cum să treci de la o destinație la alta. Pot conține argumente.
- Safe Args: Plugin Gradle pentru generarea de cod care asigură o navigare sigură cu argumente.
- Navigation Graph: Resursă XML care descrie toate destinațiile și legăturile dintre ele.
<!-- 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>
// Navigare cu Safe Args
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternative (mai puțin recomandate):
- Intent: Mod clasic pentru navigarea între Activity-uri. Mai puțin flexibil și mai dificil de gestionat în scenarii complexe.
- FragmentTransaction: Pentru gestionarea manuală a adăugării, eliminării și înlocuirii fragmentelor. Necesită mai mult cod și este predispus la erori.
- Soluții personalizate: Implementări proprii pentru gestionarea ecranelor, adesea inutil de complexe.