Junior
Ilovada bir nechta ekranlarni qanday bog‘lash mumkin?
sobes.tech AI
AIdan javob
Android Jetpack-dan NavComponent (navigatsiya komponenti).
- Fragment Nav Component: Fragmentlar asosida ilovalar uchun. Manzillar (ekranlar) va harakatlar (o‘tishlar) bilan navigatsiya grafigini belgilaydi.
- Navigation Actions: Bir manzildan boshqasiga qanday o'tishni belgilaydi. Argumentlarni o'z ichiga olishi mumkin.
- Safe Args: Argumentlar bilan tip xavfsiz navigatsiyani ta'minlaydigan Gradle plagin.
- Navigation Graph: Barcha manzillar va ularning bog'lanishlarini tavsiflovchi XML resurs.
<!-- 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 bilan navigatsiya
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
Alternativlar (kamroq tavsiya etiladi):
- Intent: Activitylar o‘rtasida o'tish uchun klassik usul. Kamroq moslashuvchan va murakkab holatlarda boshqarish qiyin.
- FragmentTransaction: Fragmentlarni qo‘shish, olib tashlash va almashtirishni qo‘lda boshqarish. Ko‘proq kod va xatolik ehtimoli yuqori.
- O‘ziga xos yechimlar: Ekranlarni boshqarish uchun o‘z yechimlar, ko‘pincha keraksiz murakkablikka olib keladi.