IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Lancer AlertDialog dans un Handler


Sujet :

Android

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut Lancer AlertDialog dans un Handler
    Bonjour,

    J'aimerais afficher un alertDialog sous certaines conditions, dans un Handler:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AlertDialog.Builder adb = new AlertDialog.Builder(getBaseContext());
    adb.setTitle("Titre");
    adb.setMessage("Message");
    adb.setPositiveButton("OK", null);
    adb.show();
    Rien de spécial, mais ça chaque fois l'application s'arrête avec une dizaine d'erreur dans le LogCat (qui ne m'aident pas d'ailleurs).

    C'est peut être lié au getBaseContext(), du fait que ça soit dans un Handler?

    Merci

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Je tente une réponse :

    Ton handler devrait être instancié depuis une Activity, et par conséquent dans le ThreadUI, seul processus habilité à modifier l'affichage (dont les AlertDialogs font partis évidemment).
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    Effectivement un AlertDialog doit obligatoirement être affichée à partir d'une Activity car c'est elle qui gère la vie de cette boîte de dialogue (en utilisant la méthode showDialog()). Lorsque tu tourneras ton écran elle restera affichée car l'activité la réaffichera automatiquement.

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    D'accord, merci, tu coup j'ai essayé de déclarer ma variable dans ma classe principale:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private AlertDialog.Builder adb;
    Dans le OnCreate() j'ai instancié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adb = new AlertDialog.Builder(getBaseContext());
    Et dans le Handler je l'affiche, mais ça plante toujours. Après peut être que vous me dites qu'on ne doit pas l'afficher dans le Handler?
    Mais je ne vois pas quand l'afficher alors (le traitement étant le run() d'un Thread(), et l'UI étant gérée par le Handler).

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    J'instancierai le AlertDialog.Builder dans la méthode onCreateDialog de ton Activité. Cela évitera de le créer alors qu'on en a pas besoin.

    Sinon pourquoi utiliser getBaseContext et pas this (this étant ton activité) ?

    Pour pouvoir lancer du code sur le thread UI tu as la méthode suivante : runOnUiThread. Tu peux faire ton showDialog dedans. Je sais pas si ça j'ai jamais essayé.

  6. #6
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    C'est bon, le this à l'air de faire la différence!
    Merci (encore)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancer wordbiz dans ubuntu
    Par richard83 dans le forum Ubuntu
    Réponses: 1
    Dernier message: 18/07/2007, 18h01
  2. Lancer exécutable dans projection flash
    Par geloic dans le forum Flash
    Réponses: 16
    Dernier message: 12/12/2006, 17h07
  3. [vb.net] lancer impression dans un service
    Par tom_hb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/06/2006, 15h20
  4. [Tomcat]Lancer tomcat dans l'IDE à partir des sources.
    Par goony dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 09/03/2006, 13h44
  5. Lancer SQLPLUS dans un script
    Par kasiop dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2006, 10h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo