Autore Topic: Cambiare testo EditText scrivendo su un altra EditText  (Letto 504 volte)

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Cambiare testo EditText scrivendo su un altra EditText
« il: 02 Settembre 2014, 12:13:42 CEST »
0
Salve, ho un problema con due EditText, perché vorrei che quando scrivo qualcosa sulla prima, venga cambiato il testo della seconda, e viceversa quando scrivo sulla seconda, venga cambiato il testo sulla prima, allora ho provato a scrivere così:

Codice (Java): [Seleziona]
rect2.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                        rect2.addTextChangedListener(new TextWatcher() {
                                @Override
                                public void beforeTextChanged(CharSequence s,int start, int count, int after) {}
                                                       
                                @Override
                                public void onTextChanged(CharSequence s,int start, int before, int count) {}
                                                       
                                @Override
                                public void afterTextChanged(Editable s) {
                                        round.setText("7");
                                }
                                                       
                        });
                        return false;
                }
});
                               
                               
round.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                        round.addTextChangedListener(new TextWatcher() {
                                       
                        @Override
                        public void beforeTextChanged(CharSequence s,int start, int count, int after) {}
                                               
                        @Override
                        public void onTextChanged(CharSequence s,int start, int before, int count) {}
       
                        @Override
                        public void afterTextChanged(Editable s) {
                                        rect2.setText("7");
                        }
                                                       
                });
                return false;
        }
});

Ho provato inizialmente senza onTouchListener(), poi ho provato (come da codice qua sopra) ad aggiungere il TextWatcher soltanto quando viene cliccata l'EditText, ma non cambia nulla, e in ogni caso va in loop infinito e l'applicazione crasha.

Come posso fare in modo che quando scrivo sulla prima edittext, cambi il testo della seconda, senza crashare?
Grazie mille in anticipo  :D
Vincenzo Cimino @ Google Play Store


Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Cambiare testo EditText scrivendo su un altra EditText
« Risposta #1 il: 02 Settembre 2014, 17:38:40 CEST »
0
È giusta la strada di aggiungere un TextChangedListener, ma non in quel punto. Non devi aggiungere un TextChangedListener ogni volta che una EditText viene cliccata.
L'aggiunta del TextChangedListener va fatta direttamente nell'onCreate della tua Activity (o onCreateView nel caso di Fragment), quindi elimina il "setOnTouchListener"
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Cambiare testo EditText scrivendo su un altra EditText
« Risposta #2 il: 03 Settembre 2014, 15:32:29 CEST »
0
Ciao, scusa per il ritatrdo  :D Comunque si infatti, nella domanda l'ho specificato che ho già provato senza il setOnTouchListener , ma il risultato è sempre lo stesso, perché il valore delle EditText cambierebbe all'infinito  :-o
Vincenzo Cimino @ Google Play Store


Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Cambiare testo EditText scrivendo su un altra EditText
« Risposta #3 il: 03 Settembre 2014, 15:45:43 CEST »
0
Hai ragione, una edittext va a modificare l'altra che va di nuovo a modificare la precedente...
Una possibile soluzione sarebbe quella di cambiare il testo dell'altra EditText soltanto se l'EditText corrente è in focus:
Codice (Java): [Seleziona]
rect2.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence s,int start, int count, int after) {}                      
         @Override
         public void onTextChanged(CharSequence s,int start, int before, int count) {}                                    
         @Override
         public void afterTextChanged(Editable s) {
                 if(rect2.isFocused())
                        round.setText("7");
         }
                                                       
});
E fare la stessa cosa per l'altra EditText.

Un'altra via sarebbe quella di tenere in memoria una variabile (numerica o booleana dato che hai soltanto due EditText) in cui memorizzi, volta per volta, quale è l'ultima EditText cliccata (es. tramite l'onTouchListener) e, nell'afterTextChanged andare a modificare l'altra EditText soltanto se richiesto
« Ultima modifica: 03 Settembre 2014, 15:59:55 CEST da vincenzoc »
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Vincenzoz

  • Utente junior
  • **
  • Post: 122
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    Vincenzo Cimino
  • Sistema operativo:
    Windows 7
Re:Cambiare testo EditText scrivendo su un altra EditText
« Risposta #4 il: 03 Settembre 2014, 16:24:17 CEST »
0
Citazione
Un'altra via sarebbe quella di tenere in memoria una variabile (numerica o booleana dato che hai soltanto due EditText) in cui memorizzi, volta per volta, quale è l'ultima EditText cliccata (es. tramite l'onTouchListener) e, nell'afterTextChanged andare a modificare l'altra EditText soltanto se richiesto

Avevo già pensato di usare un booleano per memorizzare qual'è l'edittext cliccata, però ricordavo che c'era un modo più semplice, appunto come con un controllo se l'EditText ha il focus, come hai scritto tu, infatti ho risolto usando questo controllo,  grazie mille !  :D
Vincenzo Cimino @ Google Play Store