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 :

Problème d'AlertDialog qui ne s'affiche pas


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut Problème d'AlertDialog qui ne s'affiche pas
    Bonjour,

    Je veux afficher une AlertDialog au lancement de mon application si le GPS est désactivé. Cette AlertDialog préviens l'utilisateur qu'il doit activer le GPS pour utiliser l'application, et s'il accepte, le renvoyer vers le menu des paramètres de localisation.

    Le problème, c'est que cette AlertDialog ne s'affiche pas, j'ai un écran noir qui mouline, pourtant le code de ma fonction d'affichage est bien exécuté.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    @Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
     
    		// Hide the window title.
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
     
    		setContentView(R.layout.main);
    		context = this;
    		clickListener = new MarkerListener();
     
    		locationListener = new LocationListener() {
    			public void onStatusChanged(String provider, int status,
    					Bundle extras) {
    			}
     
    			public void onProviderEnabled(String provider) {
    			}
     
    			public void onProviderDisabled(String provider) {
    			}
     
    			public void onLocationChanged(Location location) {
    				// ... on sauvegarde la position
    				myLoc = location;
     
    				}
    			}
    		};
     
    		locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
    		if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    			System.out.println("GPS désactivé"); // S'affiche bien
    			showDialog(GPS_DIALOG);
    		}
     
    		myLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000,
    				3, locationListener);
     
    		while (myLoc == null) {
    			// Wait for a not-null location
    		}
    	}
     
    	@Override
    	protected Dialog onCreateDialog(int id) {
    		Dialog dialog;
     
    		switch(id) {
    			case GPS_DIALOG:
    				AlertDialog.Builder builder = new AlertDialog.Builder(this);
    				builder.setMessage("Le GPS doit être activé pour pouvoir utiliser ce module.");
    				builder.setCancelable(false);
    				builder.setPositiveButton("Activer le GPS",
    						new DialogInterface.OnClickListener() {
    							public void onClick(final DialogInterface dialog,
    									final int id) {
    								startActivity(new Intent(
    										Settings.ACTION_LOCATION_SOURCE_SETTINGS));
    							}
    						});
    				builder.setNegativeButton("Quitter le module",
    						new DialogInterface.OnClickListener() {
    							public void onClick(final DialogInterface dialog,
    									final int id) {
    								dialog.cancel();
    								finish();
    							}
    						});
    				dialog = builder.create();
    				break;
     
    			default:
    				dialog = null;
    		}
     
    		return dialog;
    	}
    Savez-vous d'où le problème peut venir et comment le résoudre ?

    Merci d'avance, cordialement,

    Aenur56

  2. #2
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 264
    Par défaut
    Commence par mettre un System.out pour savoir si la méthode est bien appelé.

    Ensuite peut être qu'il manque :
    Ou quelque chose comme ça.

    Edit :
    Ah non tu utilises protected Dialog onCreateDialog(int id) je viens de rencontrer ça, c'est étrange et apparemment c'est deprecated, en plus ça fait des leaks...

    Du coup c'est showDialog(0); mais t'as du le mettre.

    Désolé je ne peux pas t'aider.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    L'approche préconisée par Google (depuis que showDialog a été deprecated) est d'utiliser des DialogFramgent

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut
    Je ne peux pas utiliser les fragments, je suis en API niveau 8+ (android 2.2+) et les fragments ne sont dispos qu'à partir de l'API 11.

    Sinon, j'ai déjà essayé les System.out.println() dans la méthode et elle est bien appelée.

    J'ai aussi déjà essayé l'approche avec dialog.show(), le résultat est le même :/

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Par défaut
    Pour utiliser les Fragments et tout ce qui en découle sur les versions antérieures d'Android je te conseille vivement d'utiliser la librairie ActionBarSherlock. (Elle te permet aussi d'accéder à l'actionbar, très pratique et de plus en plus utilisée)

    Tu va certes passer une heure ou deux maximum à comprendre son fonctionnement mais tu en gagnera énormément en confort.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 97
    Par défaut
    Merci, je vais y jeter un oeil

    Mais bon c'est tout de même anormal que la boite de dialogue ne s'affiche pas et j'aimerais bien savoir d'où ça provient

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

Discussions similaires

  1. [MySQL-5.6] Problème de résultat qui ne s'affiche pas
    Par casa43 dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/06/2014, 11h20
  2. Problème de site qui ne s'affiche pas
    Par kami441 dans le forum Apache
    Réponses: 5
    Dernier message: 12/01/2011, 18h46
  3. [MySQL] Problème de code qui ne s'affiche pas
    Par Santcho dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/06/2010, 10h37
  4. Problème avec un VBO qui ne s'affiche pas
    Par shenron666 dans le forum OpenGL
    Réponses: 1
    Dernier message: 28/10/2007, 18h55

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