Junior
როგორ დავაკავშიროთ რამდენიმე ეკრანი პროგრამაში?
sobes.tech AI
პასუხი AI-სგან
NavComponent (ნავიგაციის კომპონენტი) Android Jetpack-დან:
- Fragment Nav Component: ფრაგმენტებზე დაფუძნებული აპლიკაციებისათვის. განსაზღვრავს ნავიგაციის გრაფს დანიშნულების ადგილებით (ეკრანებით) და მოქმედებებით (გადამწყვეტი გზებით):
- Navigation Actions: განსაზღვრავს, როგორ გადავიდეთ ერთ დანიშნულების ადგილიდან მეორეზე. შეიძლება შეიცავდეს არგუმენტებს:
- Safe Args: Gradle-პლაგინი, რომელიც ქმნის კოდს, რომელიც უზრუნველყოფს ტიპების უსაფრთხო ნავიგაციას არგუმენტებით:
- Navigation Graph: XML რესურსი, რომელიც აღწერს ყველა დანიშნულების ადგილს და მათ შორის კავშირს:
<!-- 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 გამოყენებით გადასვლა
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToDetailFragment(itemId = 123))
ალტერნატიული (ანუ ნაკლებად სასურველი):
- Intent: კლასიკური მეთოდი Activity-ებს შორის გადასასვლელად. ნაკლებ მოქნილი და რთული მართვაა რთულ სცენარებში.
- FragmentTransaction: ფრაგმენტების ხელით მართვა. მეტი კოდი სჭირდება და შეცდომების ალბათობაა.
- მოწოდებული გადაწყვეტილებები: საკუთარი სისტემები, რომლებიც ხშირად ზედმეტად რთული და დამაბრკოლებელია.