Junior
Hogyan kapcsoljuk össze több képernyőt egy alkalmazásban?
sobes.tech MI
Válasz az MI-től
Az Android Jetpack NavComponent (navigációs komponens).
- Fragment Nav Component: Fragment alapú alkalmazásokhoz. Meghatározza a navigációs gráfot célpontokkal (képernyők) és műveletekkel (átmenetek).
- Navigation Actions: Meghatározzák, hogyan lépjen egyik célpontból a másikba. Argumentumokat tartalmazhatnak.
- Safe Args: Gradle plugin, amely típusbiztos navigációt generál argumentumokkal.
- Navigation Graph: XML erőforrás, amely leírja az összes célt és azok kapcsolatait.
<!-- 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>
// Safe Args használatával navigáció
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternatívák (kevésbé ajánlott):
- Intent: Klasszikus módszer az Activity-k közötti navigációhoz. Kevésbé rugalmas és bonyolultabb kezelni összetettebb forgatókönyvekben.
- FragmentTransaction: A fragmentek manuális hozzáadása, eltávolítása és cseréje. Több kódot igényel és hajlamos hibákra.
- Saját megoldások: Saját implementációk a képernyők kezelésére, gyakran szükségtelenül bonyolultak.