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 de visibilité


Sujet :

Android

  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Problème de visibilité
    Bonjour à toutes et à tous,

    Je n'arrive pas à appeler une méthode à partir de l'intérieur d'un OnDestroy. Cette méthode étant à l'intérieur du onCreate selon le code suivant :

    Je fais certainement une erreur grossière, mais je ne la trouve pas.

    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
    public class MainActivity extends Activity {
    	// les déclarations qui vont bien
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		// tout ce qui va bien pour que ça marche
     
    		// c'est ce qui suit que je n'arrive pas à appeler à partir du onDestroy
     
    		AlertDialog enrgTxt = new AlertDialog.Builder(this).create(); 
    		enrgTxt.setTitle("Annuler");
    		enrgTxt.setIcon(R.drawable.annuler);
    		enrgTxt.setMessage("Texte en cours non enregistré. L'enregistrer ?");
     
    		enrgTxt.setButton(-1, "Oui", new DialogInterface.OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				//				nomPosEnrg(); // Enregistrement du texte
    			}
    		});
    	}
     
     
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    		enrgTxt.show(); // erreur ici : enrgTxt n'est pas reconnu
    	}
    Merci de votre aide.

    Pierre

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Normal, ta variable enrgTxt est local à la méthode onCreate. Cette variable n'existe que dans la "durée de vie" de cette méthode, depuis sa déclaration jusqu'à la fin.
    Ainsi, si tu veux y accéder dans ton onDestroy, il est nécessaire que tu lui augmentes sa visibilité, par exemple en la transformant en attribut.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Hizin Voir le message
    ..., par exemple en la transformant en attribut.
    Et cela consiste en quoi ?

    Cordialement.

    Pierre

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Si je reprend ton code posté :

    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
    public class MainActivity extends Activity {
    	// les déclarations qui vont bien
    	private AlertDialog enrgTxt; <--------- enrgTxt passé en attribut.
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
     
    		// tout ce qui va bien pour que ça marche
     
    		// c'est ce qui suit que je n'arrive pas à appeler à partir du onDestroy
     
    		enrgTxt = new AlertDialog.Builder(this).create(); 
    		enrgTxt.setTitle("Annuler");
    		enrgTxt.setIcon(R.drawable.annuler);
    		enrgTxt.setMessage("Texte en cours non enregistré. L'enregistrer ?");
     
    		enrgTxt.setButton(-1, "Oui", new DialogInterface.OnClickListener() {
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				//				nomPosEnrg(); // Enregistrement du texte
    			}
    		});
    	}
     
     
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    		enrgTxt.show(); // erreur ici : enrgTxt n'est pas reconnu
    	}
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Et cela consiste en quoi ? ...
    J'ai la comprenette dificilette

    Je pense qu'il suffit que je déplace tout le bloc enrgTxt dans la méthode onCreate.

    Cordialement.

    Pierre

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Ton bloc de déclaration se trouve déjà dans la méthode onCreate.
    Par contre, une autre manière de faire fonctionner serait de déplacer enrgTxt.show() de onDestroy à onCreate.

    Juste une remarque aussi : onDestroy est une méthode invoquée par le système lorsque l'Acitivy est sur le point d'être détruite. Honnêtement, je me demande ce que ton code pourrait donner, la méthode onDestroy n'étant pas forcément appelée avec l'Activity correspondante au premier plan.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Ton bloc de déclaration se trouve déjà dans la méthode onCreate ...
    Tu parles du code de enrgTxt ?

    Citation Envoyé par Hizin Voir le message
    ... Par contre, une autre manière de faire fonctionner ...
    Quelle était la première manière ? Celle de l'attribut dont tu parlais ? et à laquelle je répondais ?

    Citation Envoyé par Hizin Voir le message
    ... Par contre, une autre manière de faire fonctionner serait de déplacer enrgTxt.show() de onDestroy à onCreate. ...
    Et je l'appelle comment ?

    Citation Envoyé par Hizin Voir le message
    ...Juste une remarque aussi : onDestroy est une méthode invoquée par le système lorsque l'Acitivy est sur le point d'être détruite. Honnêtement, je me demande ce que ton code pourrait donner, la méthode onDestroy n'étant pas forcément appelée avec l'Activity correspondante au premier plan.
    Si à la destruction de l'appli, je m'aperçois que je n'ai pas enregistré mes données, je le rappelle.

    Cordialement.

    Pierre

Discussions similaires

  1. Problème de visibilité de variable :(
    Par MicaelFelix dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/05/2007, 18h10
  2. tomcat - probléme de visibilité du context
    Par zardek dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/08/2006, 16h08
  3. problème de visibilité des variables dans un include
    Par d1g-2-d1g dans le forum Langage
    Réponses: 6
    Dernier message: 28/11/2005, 09h35
  4. [EasyPHP] problème de visibilité des variable dans les includes
    Par d1g-2-d1g dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/10/2005, 01h55

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