Sobes.tech
Junior

Kaip vyksta navigacija Android programose?

sobes.tech AI

Atsakymas iš AI

Navigacija Android programose gali būti įgyvendinta įvairiais būdais, iš kurių dažniausiai naudojami:

  • Navigacijos komponentai (Navigation Component): Google rekomenduojamas karkasas navigacijai įgyvendinti. Naudoja navigacijos grafiką visų ekranų ir jų tarpusavio perėjimų aprašymui. Palaiko argumentus, gilias nuorodas, perėjimo animacijas.

    // Navigacijos grafiko pavyzdys
    <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>
    
    // Pavyzdys, kaip naudoti Safe Args perėjimui
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB)
    
  • Aiškūs intencijos (Explicit Intents): Naudojami konkrečiam komponentui (Activity, Service, BroadcastReceiver) paleisti, tiek toje pačioje programoje, tiek kitoje.

    // Pavyzdys, kaip paleisti Activity
    val intent = Intent(this, SettingsActivity::class.java)
    startActivity(intent)
    
  • Neaiškūs intencijos (Implicit Intents): Apibrėžia veiksmą, kurį reikia atlikti, ir duomenis, su kuriais šis veiksmas turi būti atliktas. Android sistema suranda tinkamą komponentą šiai intencijai apdoroti.

    // Pavyzdys, kaip atidaryti interneto puslapį
    val webpage = Uri.parse("http://www.android.com")
    val intent = Intent(Intent.ACTION_VIEW, webpage)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
    
  • Back Stack valdymas: Android sistema palaiko Back Stack (grįžimo krūvą), kuris valdo navigacijos istoriją. Mygtukas "Atgal" pagal numatytuosius nustatymus perkelia vartotoją į ankstesnį krūvos elementą.

  • BottomNavigationView: UI komponentas, skirtas navigacijai tarp pagrindinių tikslų programoje.

  • DrawerLayout (Navigacijos skydelis): Šoninė išsitraukianti panelė su meniu punktais navigacijai.

Kiekvienas metodas turi savo privalumus ir taikymo scenarijus. Navigation Component yra pageidaujamas fragmentų ir veiklos valdymui vienoje programoje, užtikrinant vieningą požiūrį ir palengvinant grįžtamojo krūvos bei argumentų valdymą. Intents naudojami kitų komponentų paleidimui ir sąveikai su kitomis programomis.