Sobes.tech
Junior

Kuidas toimub navigeerimine Android rakendustes?

sobes.tech AI

Vastus AI-lt

Navigatsioon Androidi rakendustes võib olla teostatav erinevatel viisidel, millest kõige levinumad on:

  • Navigation Component: Google soovitatud raamistik navigatsiooni teostamiseks. Kasutab navigatsioonigraafikut kõigi ekraanide ja nende vaheliste üleminekute kirjeldamiseks. Toetab argumente, sügavaid linke, üleminekute animatsioone.

    // Navigatsioonigraafi näide
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/nav_graph"
        app:startDestination="@id/fragmentA">
    
        <fragment
            android:id="@+id/fragmentA"
            android:name="com.example.myapp.FragmentA"
            android:label="Fragment A">
            <action
                android:id="@+id/action_fragmentA_to_fragmentB"
                app:destination="@id/fragmentB" />
        </fragment>
        <fragment
            android:id="@+id/fragmentB"
            android:name="com.example.myapp.FragmentB"
            android:label="Fragment B" />
    </navigation>
    
    // Safe Args kasutamine üleminekuks
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB)
    
  • Selged intentid (Explicit Intents): Kasutatakse konkreetse komponendi (Activity, Service, BroadcastReceiver) käivitamiseks, kas samas rakenduses või teises.

    // Activity käivitamise näide
    val intent = Intent(this, SettingsActivity::class.java)
    startActivity(intent)
    
  • Kaudsed intentid (Implicit Intents): Kirjeldavad tegevust, mida tuleb teha, ja andmeid, millega see tegevus peab toimuma. Android süsteem leiab sobiva komponendi selle intenti töötlemiseks.

    // Veebilehe avamise näide
    val webpage = Uri.parse("http://www.android.com")
    val intent = Intent(Intent.ACTION_VIEW, webpage)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
    
  • Back Stack'i haldamine: Android süsteem toetab Back Stack'i, mis haldab navigeerimise ajalugu. Tagasisuunamisnupp viib kasutaja tavaliselt tagasi eelnevale punktile stack'is.

  • BottomNavigationView: UI komponent, mis võimaldab navigeerimist rakenduse kõrgemate sihtkohtade vahel.

  • DrawerLayout (Navigation Drawer): külgkapp, mis tõuseb välja menüüpunktidega navigeerimiseks.

Iga meetodil on oma eelised ja kasutusstsenaariumid. Navigation Component on eelistatud fragmentide ja tegevuste vahelise navigeerimise haldamiseks ühes rakenduses, pakkudes ühtset lähenemist ja lihtsustades tagasipöördumise stack'i ning argumentide haldamist. Intents kasutatakse teiste komponentide käivitamiseks ja teiste rakendustega suhtlemiseks.