Junior — Middle
Jak implementovat přechod na konkrétní Fragment pomocí push notifikace?
sobes.tech AI
Odpověď od AI
Pro navigaci na konkrétní Fragment prostřednictvím push oznámení se obvykle používá Intent s dodatečnými daty (extras), která jsou předávána do Activity, a poté se rozhodne, který Fragment zobrazit.
Přibližný algoritmus:
- V push oznámení předat data ukazující na požadovaný Fragment (například řetězcový identifikátor nebo enum).
- V metodě zpracování stisknutí oznámení (PendingIntent) vytvořit Intent pro spuštění Activity.
- V Activity, v metodě onCreate nebo onNewIntent, přečíst data z Intent a provést výměnu Fragmentu za požadovaný.
Příklad kódu:
// Při vytváření oznámení
val intent = Intent(context, MainActivity::class.java).apply {
putExtra("target_fragment", "profile")
}
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
// V MainActivity
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()
}
}
Tímto způsobem uživatel při kliknutí na oznámení přímo přejde na požadovaný obrazovku.