Sobes.tech
Junior

Jak je zajištěna navigace v Android aplikacích?

sobes.tech AI

Odpověď od AI

Navigace v Android aplikacích může být realizována různými způsoby, z nichž nejběžnější jsou:

  • Navigační komponenty (Navigation Component): Doporučený Google framework pro implementaci navigace. Používá navigační graf k popisu všech obrazovek a přechodů mezi nimi. Podporuje argumenty, hluboké odkazy, přechodové animace.

    // Příklad navigačního grafu
    <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>
    
    // Příklad přechodu s použitím Safe Args
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB)
    
  • Explicitní záměry (Explicit Intents): Používají se k spuštění konkrétního komponentu (Activity, Service, BroadcastReceiver), buď v aktuální aplikaci, nebo v jiné.

    // Příklad spuštění Activity
    val intent = Intent(this, SettingsActivity::class.java)
    startActivity(intent)
    
  • Implicitní záměry (Implicit Intents): Vyhlašují akci, kterou je třeba vykonat, a data, s nimiž má být tato akce provedena. Android systém najde vhodný komponent pro zpracování tohoto záměru.

    // Příklad otevření webové 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 Stacku: Android systém podporuje Back Stack (zásobník návratu), který spravuje historii navigace. Tlačítko "Zpět" standardně přesune uživatele na předchozí položku ve zásobníku.

  • BottomNavigationView: UI komponenta pro navigaci mezi hlavními destinacemi v aplikaci.

  • DrawerLayout (Navigační zásuvka): Boční vysouvací panel s položkami menu pro navigaci.

Každá metoda má své výhody a scénáře použití. Navigation Component je preferována pro správu navigace mezi fragmenty a aktivitami v rámci jedné aplikace, poskytuje jednotný přístup a zjednodušuje práci se zásobníkem návratu a argumenty. Intent jsou používány k spuštění jiných komponent a interakci s jinými aplikacemi.