Sobes.tech
Junior

Kako se vrši navigacija u Android aplikacijama?

sobes.tech АИ

Одговор од АИ

Navigacija u Android aplikacijama može se realizovati na različite načine, od kojih su najčešći:

  • Komponente za navigaciju (Navigation Component): Preporučeni Google-ov okvir za implementaciju navigacije. Koristi graf navigacije za opis svih ekrana i prelaza između njih. Podržava argumente, duboke linkove, animacije prelaza.

    // Primer grafa navigacije
    <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>
    
    // Primer za prelaz korišćenjem Safe Args
    findNavController().navigate(R.id.action_fragmentA_to_fragmentB)
    
  • Explicitni intenti (Explicit Intents): Koriste se za pokretanje određenog komponenta (Activity, Service, BroadcastReceiver), bilo u trenutnoj aplikaciji ili u drugoj.

    // Primer za pokretanje Activity
    val intent = Intent(this, SettingsActivity::class.java)
    startActivity(intent)
    
  • Implicitni intenti (Implicit Intents): Deklarišu akciju koju treba izvršiti i podatke sa kojima se ta akcija treba izvršiti. Android sistem pronalazi odgovarajući komponent za obradu ovog intent-a.

    // Primer za otvaranje veb stranice
    val webpage = Uri.parse("http://www.android.com")
    val intent = Intent(Intent.ACTION_VIEW, webpage)
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
    
  • Upravljanje Back Stack-om: Android sistem podržava Back Stack (stog za povratak), koji upravlja istorijom navigacije. Dugme "Nazad" podrazumevano preusmerava korisnika na prethodnu tačku u stogu.

  • BottomNavigationView: Komponenta UI za navigaciju između vršnih destinacija u aplikaciji.

  • DrawerLayout (Navigacioni fioka): Bočni panel koji se izvlači sa strane sa stavkama menija za navigaciju.

Svaka metoda ima svoje prednosti i scenarije korišćenja. Navigation Component je preferirana za upravljanje navigacijom između fragmenata i aktivnosti unutar jedne aplikacije, obezbeđujući jedinstven pristup i pojednostavljujući rad sa back stack-om i argumentima. Intenti se koriste za pokretanje drugih komponenti i interakciju sa drugim aplikacijama.