Sobes.tech
Junior — Middle

Hogyan lehet megvalósítani a navigációt egy adott Fragmenthez push értesítés segítségével?

sobes.tech MI

Válasz az MI-től

A push értesítésen keresztül egy adott Fragmenthez való navigáláshoz általában egy Intentet használunk kiegészítő adatokkal (extras), amelyeket az Activity-nek adunk át, majd az Activity dönt arról, melyik Fragmentet mutassa.

Körülbelüli algoritmus:

  1. A push értesítésben adjunk át adatokat, amelyek a kívánt Fragmentre utalnak (pl. egy string azonosító vagy enum).
  2. A notification megnyomásának kezelésére szolgáló módszerben (PendingIntent) hozzunk létre egy Intentet az Activity indításához.
  3. Az Activityben, az onCreate vagy onNewIntent metódusban olvassuk ki az Intentből az adatokat, és cseréljük ki a Fragmentet a szükségesre.

Kód példa:

// A notification létrehozásakor
val intent = Intent(context, MainActivity::class.java).apply {
    putExtra("target_fragment", "profile")
}
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

// A MainActivity-ben
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val targetFragment = intent.getStringExtra("target_fragment")
    if (targetFragment != null) {
        val fragment = when(targetFragment) {
            "profile" -> ProfileFragment()
            "settings" -> SettingsFragment()
            else -> DefaultFragment()
        }
        supportFragmentManager.beginTransaction()
            .replace(R.id.fragment_container, fragment)
            .commit()
    }
}

Így, amikor a felhasználó rákattint a értesítésre, az azonnal a kívánt képernyőre navigál.