2012-06-07 13 views
11

Ho un edittext e un pulsante nel mio layout e nel mio codice sto impostando keyListener del edittext nulloModifica testo listener per i tasti

editText.setKeyListener(null); 

in modo che non riesco a scrivere nel mio edittext. Ora sul mio pulsante clic dovrei essere in grado di digitare nel mio ediitext. Come lo posso fare. È un problema semplice, ma non sono in grado di trovare alcuna soluzione. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

19

io sono probabilmente in ritardo, ma ora, questo è il modo in cui lo faccio:

public class MyActivity extends Activity 
{ 
    private KeyListener listener; 
    private EditText editText; 

    public void onCreate(...) 
    { 
     editText = ... // Get EditText from somewhere 
     listener = editText.getKeyListener(); // Save the default KeyListener!!! 
     editText.setKeyListener(null); // Disable input 
    } 

    // When you click your button, restore the default KeyListener 
    public void buttonClickHandler(...) 
    { 
     editText.setKeyListener(listener); 
    } 
} 

In sostanza, per la prima volta a risparmiare il EditText predefinito KeyListener prima di chiamare setKeyListener(null). Quindi, quando fai clic sul tuo pulsante, chiami di nuovo setKeyListener, passando il listener predefinito che hai precedentemente salvato.

+0

Proprio quello che volevo ... Non ho provato, ma sembra promettente. – SKT

1

il suo bug in Android Vedere qui Bugs.

Ma in file XML si può fare it.Using android:editable="false"

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:editable="false" <<<<<<< 
</EditText> 
+0

Scusate se ci piace che saremo ancora in grado di digitare nella EditText in modalità disattivata anche. Non posso accettarlo come risposta, sebbene possa dare all'utente la sensazione che potrebbe non essere in grado di digitare in edittext – SKT

+0

@ user1172936 vedere aggiornamento della mia risposta –

+0

Quello che voglio fare è solo attraverso il codice. Perché quando tocchi di nuovo quel pulsante. Voglio rendere la proprietà di edittext com'era prima (non potrei digitare in esso) Quindi non posso andare per xml ... Ma controllerò se ci sono proprietà come modificabili nel codice java ... Mean mentre se tu trova una risposta per favore aiutami pubblicandolo ... Grazie – SKT

3

È possibile utilizzare questo:

// When you click your button, restore the default KeyListener 
public void buttonClickHandler(...) 
{ 
    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener()); 
} 
+0

Penso che la risposta di rainai sia più corretta. Ciò manterrà il keylistener originale del metodo di editorext – SKT

+0

i tray rainai, ma non funziona per me, quindi io ma questo metodo, perché è funzionante. :) –

+0

Il metodo di rainai non ha funzionato neanche per me. Questo ha funzionato comunque. – Rishabh876

Problemi correlati