Autore Topic: Strano comportamento dell'evento setOnTouchListener  (Letto 1192 volte)

Offline Nottambulo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
Strano comportamento dell'evento setOnTouchListener
« il: 24 Ottobre 2010, 18:09:33 CEST »
0
Per selezionare il testo di una EditText quando viene toccata ho usato il seguente codice:

Codice (Java): [Seleziona]
Testo.setOnTouchListener(new EditText.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                Testo.selectAll();
                return false;
                }
});

Il problema è che al primo tocco funziona, selezionando il testo, poi lo fa una volta si e una no.... Qualcuno sa la causa di questo strano comportamento e la soluzione da adottare?
Grazie, ciao
« Ultima modifica: 24 Ottobre 2010, 18:46:50 CEST da JD, Reason: Usate i bbcode java e xml!! xD »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #1 il: 24 Ottobre 2010, 18:46:36 CEST »
0
A quanto ho potuto vedere l'OnTouchListener genera una callback sia quando poggi il dito sulla EditText, sia quando lo togli (sembra rilevare un cambiamento del tocco).

L'OnClickListener dovrebbe fare al caso tuo:
Codice (Java): [Seleziona]
        testo.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                testo.selectAll();
            }
        });
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Nottambulo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #2 il: 25 Ottobre 2010, 04:14:50 CEST »
0
Grazie della risposta, avevo già provato ad utilizzare l'evento setOnClickListener, ma così non funziona meglio setOnTouchListener che va una volta si e una no...

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #3 il: 25 Ottobre 2010, 10:03:35 CEST »
0
Molto strano, nelle mie prove funzionava sempre correttamente. Sospetto che il problema possa non essere legato al listener. Hai controllato bene .selectAll()?
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #4 il: 25 Ottobre 2010, 10:20:08 CEST »
0
Per selezionare il testo di una EditText quando viene toccata ho usato il seguente codice:

Codice (Java): [Seleziona]
Testo.setOnTouchListener(new EditText.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                Testo.selectAll();
                return false;
                }
});

Il problema è che al primo tocco funziona, selezionando il testo, poi lo fa una volta si e una no.... Qualcuno sa la causa di questo strano comportamento e la soluzione da adottare?
Grazie, ciao


dovresti provare a controllare il tipo di MotionEvent passato:

Codice (Java): [Seleziona]
Testo.setOnTouchListener(new EditText.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                          if(event == MotionEvent.ACTION_DOWN) {
                                   Testo.selectAll();
                          }
                return true;
                }
});

Inoltre ti consiglierei di restituire true, perché così comunichi il fatto di aver preso in carico l'evento.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline Nottambulo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #5 il: 25 Ottobre 2010, 21:43:08 CEST »
0
Per 7h38ugg3r, nella mia applicazione controllo il tipo di MotionEvent passato, come nel tuo esempio. L'ho scritto senza in quanto non cambia il risultato togliendo il controllo.
Per JD, che significa
Citazione
Hai controllato bene .selectAll()?
, esistono metodi diversi per selezionare tutto?
Dato che a te funziona e a me no, io uso la versione 2.1 update, magari non sono le stesse.
Grazie degli aiuti, ciao.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Strano comportamento dell'evento setOnTouchListener
« Risposta #6 il: 25 Ottobre 2010, 22:02:12 CEST »
0
Ah, sry, avevo frainteso. Non so perché quando ho letto "per selezionare il testo" ho pensato ad un semplice getText(). In effetti anche a me lo seleziona una volta si e una no :P
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !