Junior
Jak łączyć wiele ekranów w aplikacji?
sobes.tech AI
Odpowiedź od AI
Komponent NavComponent (komponent nawigacji) z Android Jetpack.
- Fragment Nav Component: Dla aplikacji opartych na fragmentach. Definiuje wykres nawigacji z miejscami docelowymi (ekranami) i akcjami (przejściami).
- Navigation Actions: Określają, jak przejść z jednego miejsca docelowego do drugiego. Mogą zawierać argumenty.
- Safe Args: Wtyczka Gradle do generowania kodu zapewniającego bezpieczną nawigację z argumentami.
- Navigation Graph: Zasób XML opisujący wszystkie miejsca docelowe i ich powiązania.
<!-- 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>
// Nawigacja z Safe Args
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternatywy (mniej preferowane):
- Intent: Klasyczna metoda przejścia między Activity. Mniej elastyczna i trudniejsza w zarządzaniu w złożonych scenariuszach.
- FragmentTransaction: Do ręcznego zarządzania dodawaniem, usuwaniem i zamianą fragmentów. Wymaga więcej kodu i jest podatna na błędy.
- Rozwiązania własne: Własne implementacje zarządzania ekranami, często niepotrzebnie skomplikowane.