2010-02-25 8 views
3

J'ai une TabActivity avec 4 onglets. J'ai un service en cours d'exécution - ce service fonctionne même après que mon TabActivity a été détruit.Sélection d'un onglet spécifique dans une TabActivity à partir d'un PendingIntent envoyé à partir d'une notification

Lorsque le service reçoit un événement, je crée une notification. Le TabActivity peut, à ce moment, être détruit, ou juste courir en arrière-plan.

Comment puis-je créer un Notification/PendingIntent qui va soit lancer le TabActivity s'il n'est pas en cours d'exécution, soit l'amener au premier plan s'il l'est déjà, et focaliser un onglet spécifique basé sur l'événement?

J'ai pensé à enregistrer un récepteur de diffusion par programmation dans TabActivity, et avec cela je vais pouvoir mettre l'accent sur l'onglet, mais comment faire de TabActivity l'activité active?

Répondre

1

Je pense avoir trouvé la réponse dans le documentation

Ceci est appelé pour les activités qui mettent launchMode à singleTop dans leur emballage, ou si un client a utilisé le drapeau FLAG_ACTIVITY_SINGLE_TOP lors de l'appel startActivity(Intent). Dans les deux cas, lorsque l'activité est relancée en haut de la pile d'activités au lieu d'une nouvelle instance de l'activité démarrée, onNewIntent() sera appelée sur l'instance existante avec l'intention qui a été utilisée pour la relancer "

Cela résout le problème que je tentais de comprendre que l'intention était pas passé à onCreate lorsque l'application était déjà en cours d'exécution, parce que onCreate() n'a pas été appelé.

+0

Est-il possible d'ouvrir un onglet spécifique si l'activité de tabulation est déjà ouverte? L'activité de tabulation est en premier plan, pas en arrière-plan et après avoir tapé sur la notification d'état, l'activité de tabulation doit uniquement changer l'onglet actuellement défini? –

+0

@Khushbu Shah, en ajoutant "android: launchMode =" singleTask "résout votre problème si l'onglet spécifique est déjà au premier plan. –

2

J'espère que vous vérifiez déjà les docs sur « Comment créer des notifications » et « Comment commencer l'activité de la notification » - sinon, juste check it) Afin d'activer l'onglet particulier de notification, je vous conseille d'utiliser " extras "dans votre PendingIntent. il suffit de mettre le nombre, par exemple, de tabulation particulière dans les extras dans l'intention, et lorsque 'onCreate()' dans Activity sera appelée, il suffit de la récupérer depuis Intent (dans Activity call getIntent()) et de simplement setCurrentTab (number); dans tabHost.

Je suis désolé pour mon anglais) espère que cela aiderait.

+1

Cela fonctionne bien pour Une TabAtivity qui n'est pas déjà en cours d'exécution Si elle est en cours d'exécution et en arrière-plan, l'Intention ne sera jamais passée à onCreate() Il semble juste recentrer le TabActivity, mais l'Intention n'est jamais sed à n'importe où. – synic

Questions connexes