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: Հատուկ կառավարման համար՝ ֆրագմենտների ավելացման, հեռացման և փոխարինման համար: Պահանջում է ավելի շատ կոդ և ենթակա է սխալների:
- Հատուկ լուծումներ: Իրենց սեփական կառավարման համակարգեր, որոնք հաճախ ավելորդ են և բարդ: