TabActivity affichant plusieurs onglets de la même activité (Initialiser les propriétés sur les activités enfants)

StackOverflow https://stackoverflow.com/questions/8400395

  •  28-10-2019
  •  | 
  •  

Question

Je viens de commencer le développement Android il y a 3 jours et j'essaye de développer un messager pour Yahoo. Enfer d'une première application, non?! : D

Le problème auquel je suis confronté en ce moment est que j'essaie d'implémenter une fenêtre de messagerie instantanée à onglets censée afficher les personnes avec lesquelles je discute actuellement. J'ai conçu un fichier de mise en page et la classe d'activité nécessaire pour une seule fenêtre de discussion et j'utilise un TabActivity pour en montrer plusieurs à l'utilisateur. Cependant, le problème est que je stocke certaines informations spécifiques au chat (telles que l'ID de l'utilisateur avec lequel je discute actuellement) dans la classe d'activité elle-même et je rencontre des problèmes pour initialiser ces valeurs lorsqu'un nouvel onglet est créé.

Au départ, j'ai utilisé un BroadcastReceiver et une intention d'initialiser comme ceci:

protected class MyListener extends BroadcastReceiver
    {

        @Override
        public void onReceive(Context context, Intent intent)
        {
            if (intent.getAction().equals(
                    "com.sirm2x.messenger.CHAT_WINDOW_CREATED"))
            {
                 ChatWindowActivity.this.friendId = intent.getExtras()
                 .getString("friendId");
            }
        }
    }

Le problème est que le friendId de toutes les activités est défini sur la valeur passée pour le dernier onglet à créer!

Quelle est la solution / la meilleure pratique pour de telles situations? Est-ce que j'aborde le problème correctement?

Toute aide est extrêmement appréciée!

Était-ce utile?

La solution

Le problème ici est que vous enregistrez un récepteur de diffusion dans chacun ou vos onglets, et chacun de vos récepteurs reçoit la diffusion, en y définissant la variable friendId.

Je ne suis pas sûr que BroadcastReceiver soit la bonne approche ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top