Autore Topic: Scrivere in due EditText  (Letto 538 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Scrivere in due EditText
« il: 12 Settembre 2013, 20:49:18 CEST »
0
Salve, volevo fare in modo che date due edittext, quello che io scrivo nella prima venga stampato anche nella seconda oppure quello che scrivo nella seconda venga stampato nella prima e ho provato alla seguente maniera:

Codice (Java): [Seleziona]
primo.addTextChangedListener(new TextWatcher() {
                     public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                     public void onTextChanged(CharSequence s, int start, int before, int count){}
                     @Override
                     public void afterTextChanged(Editable v) {
                        secondo.setText(primo.getText().toString());
                     }
                });    

                secondo.addTextChangedListener(new TextWatcher() {
                      public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                      public void onTextChanged(CharSequence s, int start, int before, int count){}
                      @Override
                      public void afterTextChanged(Editable v) {
                          primo.setText(secondo.getText().toString());
                      }
                });
Ma quando scrivo qualcosa in una delle due EditText l'applicazione crasha e da questi errori nei log:

Codice: [Seleziona]
09-12 18:40:48.504: E/AndroidRuntime(1440): FATAL EXCEPTION: main
09-12 18:40:48.504: E/AndroidRuntime(1440): java.lang.StackOverflowError
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1013)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:913)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.TextUtils.getChars(TextUtils.java:74)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.method.ReplacementTransformationMethod$ReplacementCharSequence.getChars(ReplacementTransformationMethod.java:151)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.TextUtils.getChars(TextUtils.java:74)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.TextUtils.indexOf(TextUtils.java:107)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.StaticLayout.generate(StaticLayout.java:182)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.DynamicLayout.reflow(DynamicLayout.java:284)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.text.DynamicLayout.<init>(DynamicLayout.java:170)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.makeSingleLayout(TextView.java:5986)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.makeNewLayout(TextView.java:5884)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.checkForRelayout(TextView.java:6423)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3696)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$2.afterTextChanged(MainActivity.java:49)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$3.afterTextChanged(MainActivity.java:68)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$2.afterTextChanged(MainActivity.java:49)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$3.afterTextChanged(MainActivity.java:68)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$2.afterTextChanged(MainActivity.java:49)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$3.afterTextChanged(MainActivity.java:68)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$2.afterTextChanged(MainActivity.java:49)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3529)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at com.example.conversione.MainActivity$3.afterTextChanged(MainActivity.java:68)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.sendAfterTextChanged(TextView.java:7247)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3703)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.TextView.setText(TextView.java:3554)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widget.EditText.setText(EditText.java:80)
09-12 18:40:48.504: E/AndroidRuntime(1440):         at android.widge

Grazie mille in anticipo per l'aiuto  :D
« Ultima modifica: 12 Settembre 2013, 22:07:32 CEST da Vincenzoz »
Vincenzo Cimino @ Google Play Store


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Scrivere in due EditText
« Risposta #1 il: 12 Settembre 2013, 21:11:12 CEST »
+1
Eheh, se interpreto bene codice e LogCat, mi sembra di tornare ai loop infiniti che facevo ai primi passi di programmazione con il VIC20.  :D

Sembra che il codice entri in un loop senza fine perchè se cambi la #1 setti la #2, ma a quel punto cambia anche la #2 che setta la #1 e così via. Potrebbe bastare verificare che la edittext corrente abbia il focus.

Qualcosa tipo:

Codice (Java): [Seleziona]
if primo.hasFocus() secondo.setText(primo.getText().toString());
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Scrivere in due EditText
« Risposta #2 il: 12 Settembre 2013, 21:48:34 CEST »
0
Ok grazie ho risolto alla seguente maniera:
Codice (Java): [Seleziona]
primo.addTextChangedListener(new TextWatcher() {
                     public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                     public void onTextChanged(CharSequence s, int start, int before, int count){}
                     @Override
                     public void afterTextChanged(Editable v) {
                       if(primo.hasFocus()){
                          secondo.setText(primo.getText().toString());
                       }
                     }
                });    

                secondo.addTextChangedListener(new TextWatcher() {
                      public void beforeTextChanged(CharSequence s, int start, int count, int after){}
                      public void onTextChanged(CharSequence s, int start, int before, int count){}
                      @Override
                      public void afterTextChanged(Editable v) {
                         if(secondo.hasFocus()){
                              primo.setText(secondo.getText().toString());
                           }
                      }
                });
Grazie ancora per l'aiuto  :D
« Ultima modifica: 12 Settembre 2013, 23:46:30 CEST da Vincenzoz »
Vincenzo Cimino @ Google Play Store