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 TextWatcher si j'efface l'édittext


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    technico
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technico
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Problème TextWatcher si j'efface l'édittext
    Bonjour,

    Lors d'un développement, pour limiter le nombre de widgets, je mets à jour automatiquement un edittext en utilisant TextWatcher.

    Cette exemple converti automatiquement une pente exprimée en pourcentage en degrés.

    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
    package Angle.toiture;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.EditText;
     
     
     
     
    public class Angle_ToitureActivity extends Activity implements TextWatcher{
     
    	private EditText editText1;
    	private EditText editText2;
    	private Double AngleP;
    	private String AngleD;
     
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            editText1 = (EditText) findViewById(R.id.editText1); 
            editText1.addTextChangedListener(this); 
     
        }
     
     
    	@Override
    	public void afterTextChanged(Editable s) {
    		// TODO Auto-generated method stub
     
     
    		AngleP=Double.parseDouble(editText1.getText().toString());
     
    		AngleD = Double.toString(Math.atan(AngleP/100)/(Math.PI/180));
    		((EditText)findViewById(R.id.editText2)).setText(AngleD);
    	}
     
    	@Override
    	public void beforeTextChanged(CharSequence s, int start, int count,int after)
    	{
     
    	}
     
     
    	@Override
     
    	public void onTextChanged(CharSequence s, int start, int before, int count) 
     
    	{
     
    	}
    }
    Tous se passe bien sauf si j'efface le contenue de l'edittext avec la touche BackDel de l'émulateur, là, l'application plante.

    Avez-vous une idée?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Si l'application plante alors il y a un logCat! Pouvons nous l'avoir s'il te plait?

    Je pense que ceci est du à ce que tu convertis une chaine vide en double! Du coup il faut ajouter un test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (!editText1.getText().toString().equals(""))
    {
    AngleP=Double.parseDouble(editText1.getText().toString());
     
    		AngleD = Double.toString(Math.atan(AngleP/100)/(Math.PI/180));
    		((EditText)findViewById(R.id.editText2)).setText(AngleD);
    }

  3. #3
    Candidat au Club
    Homme Profil pro
    technico
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technico
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Voici le LogCast

    04-10 08:00:27.816: D/gralloc_goldfish(2948): Emulator without GPU emulation detected.
    04-10 08:00:46.316: D/AndroidRuntime(2948): Shutting down VM
    04-10 08:00:46.316: W/dalvikvm(2948): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
    04-10 08:00:46.416: E/AndroidRuntime(2948): FATAL EXCEPTION: main
    04-10 08:00:46.416: E/AndroidRuntime(2948): java.lang.NumberFormatException: Invalid double: ""
    04-10 08:00:46.416: E/AndroidRuntime(2948): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at java.lang.StringToReal.parseDouble(StringToReal.java:248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at java.lang.Double.parseDouble(Double.java:295)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at Angle.toiture.Angle_ToitureActivity.afterTextChanged(Angle_ToitureActivity.java:36)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.widget.TextView.sendAfterTextChanged(TextView.java:7591)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:8003)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.sendTextHasChanged(SpannableStringBuilder.java:889)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:390)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:266)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:443)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:216)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:29)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.method.BaseKeyListener.backspaceOrForwardDelete(BaseKeyListener.java:90)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.method.BaseKeyListener.backspace(BaseKeyListener.java:45)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.method.BaseKeyListener.onKeyDown(BaseKeyListener.java:151)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.text.method.NumberKeyListener.onKeyDown(NumberKeyListener.java:134)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.widget.TextView.doKeyDown(TextView.java:5386)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.widget.TextView.onKeyDown(TextView.java:5206)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.KeyEvent.dispatch(KeyEvent.java:2533)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.View.dispatchKeyEvent(View.java:5446)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1248)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1859)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.app.Activity.dispatchKeyEvent(Activity.java:2324)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1806)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3300)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3273)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2436)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.os.Handler.dispatchMessage(Handler.java:99)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.os.Looper.loop(Looper.java:137)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at android.app.ActivityThread.main(ActivityThread.java:4340)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at java.lang.reflect.Method.invokeNative(Native Method)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at java.lang.reflect.Method.invoke(Method.java:511)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    04-10 08:00:46.416: E/AndroidRuntime(2948): at dalvik.system.NativeStart.main(Native Method)
    04-10 08:00:49.416: I/Process(2948): Sending signal. PID: 2948 SIG: 9

  4. #4
    Candidat au Club
    Homme Profil pro
    technico
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technico
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par David55 Voir le message
    Bonjour,

    Si l'application plante alors il y a un logCat! Pouvons nous l'avoir s'il te plait?

    Je pense que ceci est du à ce que tu convertis une chaine vide en double! Du coup il faut ajouter un test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (!editText1.getText().toString().equals(""))
    {
    AngleP=Double.parseDouble(editText1.getText().toString());
     
    		AngleD = Double.toString(Math.atan(AngleP/100)/(Math.PI/180));
    		((EditText)findViewById(R.id.editText2)).setText(AngleD);
    }
    Merci de la réponse, je test cet AM.

  5. #5
    Candidat au Club
    Homme Profil pro
    technico
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : technico
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C'est la bonne solution.
    il faut faire le test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void afterTextChanged(Editable s) {
    		// TODO Auto-generated method stub
    		if (!editText1.getText().toString().equals(""))
    		{	AngleP=Double.parseDouble(editText1.getText().toString());}
    		else{AngleP=0.00;
    		}
     
    		AngleD = Double.toString(Math.atan(AngleP/100)/(Math.PI/180));
    		((EditText)findViewById(R.id.editText2)).setText(AngleD);
    	}
    L'erreur n'apparaît que pour un edittext qui n'est pas de type String.

    Merci beaucoup David 55.

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    De rien

    Pour info, tu pouvais le voir dans le logCat:
    java.lang.NumberFormatException: Invalid double: ""

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

Discussions similaires

  1. Problème de tabulation après effacement de données
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/01/2013, 09h00
  2. EditeTexte probléme la valeur s'efface
    Par mokhtar1105 dans le forum Android
    Réponses: 10
    Dernier message: 15/03/2012, 12h10
  3. Réponses: 2
    Dernier message: 02/08/2006, 17h21
  4. Problèmes d'effacement en cascade (HELP !)
    Par zarbydigital dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/09/2005, 16h12
  5. Réponses: 18
    Dernier message: 30/06/2005, 13h30

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