Sobes.tech
Junior

Ako sa vykonáva navigácia v Android aplikáciách?

sobes.tech AI

Odpoveď od AI

Navigácia v Android aplikáciách môže byť realizovaná rôznymi spôsobmi, z ktorých najbežnejšie sú:

  • Navigačné komponenty (Navigation Component): Odporúčaný Google framework na implementáciu navigácie. Používa graf navigácie na opis všetkých obrazoviek a prechodov medzi nimi. Podporuje argumenty, hlboké odkazy, animácie prechodov.

    // Príklad grafu navigácie
    <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>
    
    // Príklad prechodu s použitím Safe Args
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB)
    
  • Explicitné zámery (Explicit Intents): Používajú sa na spustenie konkrétneho komponentu (Activity, Service, BroadcastReceiver), buď v aktuálnej aplikácii, alebo v inej.

    // Príklad spustenia Activity
    val intent = Intent(this, SettingsActivity::class.java)
    startActivity(intent)
    
  • Nepriame zámery (Implicit Intents): Vyhlasujú akciu, ktorú je potrebné vykonať, a údaje, s ktorými má byť táto akcia vykonaná. Android systém nájde vhodný komponent na spracovanie tohto zámery.

    // Príklad otvorenia webovej stránky
    val webpage = Uri.parse("http://www.android.com")
    val intent = Intent(Intent.ACTION_VIEW, webpage)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
    
  • Správa Back Stack-u: Android systém podporuje Back Stack (zásobník návratu), ktorý spravuje históriu navigácie. Tlačidlo "Späť" predvolene presunie používateľa na predchádzajúci bod v zásobníku.

  • BottomNavigationView: Komponent UI pre navigáciu medzi hlavnými destináciami v aplikácii.

  • DrawerLayout (Navigačný zásuvka): Bočný vysúvateľný panel s položkami menu pre navigáciu.

Každá metóda má svoje výhody a scenáre použitia. Navigation Component je preferovaná na správu navigácie medzi fragmentmi a aktivitami v rámci jednej aplikácie, zabezpečuje jednotný prístup a zjednodušuje prácu so zásobníkom návratu a argumentmi. Intent sa používajú na spustenie iných komponentov a interakciu s inými aplikáciami.