Sobes.tech
Junior — Middle

Como pode implementar a navegação para um Fragment específico usando uma notificação push?

sobes.tech IA

Resposta da IA

Para navegar até um Fragment específico através de uma notificação push, normalmente usa-se um Intent com dados adicionais (extras), que são passados para a Activity, e então a Activity decide qual Fragment mostrar.

Algoritmo aproximado:

  1. Na notificação push, passar dados que indiquem o Fragment desejado (por exemplo, um identificador de string ou enum).
  2. No método de tratamento do clique na notificação (PendingIntent), criar um Intent para iniciar a Activity.
  3. Na Activity, no método onCreate ou onNewIntent, ler os dados do Intent e fazer a substituição do Fragment pelo necessário.

Exemplo de código:

// Ao criar a notificação
val intent = Intent(context, MainActivity::class.java).apply {
    putExtra("target_fragment", "profile")
}
val pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

// Na 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()
    }
}

Dessa forma, ao clicar na notificação, o usuário será direcionado diretamente para a tela desejada.