2012-06-07 5 views
11

Ich habe ein edittext und einen Knopf in meinem Layout und in meinem Code Ich gründe keyListener der edittext als nullText bearbeitet Taste Hörer

editText.setKeyListener(null); 

so, dass ich nicht in meine edittext eingeben kann. Jetzt auf meinem Knopf klicken sollte ich in meine ediitext eingeben können. Wie kann ich das machen. Es ist ein einfaches Problem, aber ich kann keine Lösung finden. Jede Hilfe würde sehr geschätzt werden.

Antwort

19

Ich bin wahrscheinlich spät, aber das ist die Art, wie ich es tun:

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); 
    } 
} 

Grundsätzlich speichern Sie zuerst Die EditText Standard KeyListener vor dem Anruf setKeyListener(null). Wenn Sie dann auf Ihre Schaltfläche klicken, rufen Sie erneut setKeyListener auf und übergeben den Standardlistener, den Sie zuvor speicherten.

+0

Genau das, was ich wollte ... Habe es nicht versucht, aber es klingt vielversprechend. – SKT

1

der Fehler in Android Siehe hier .

Aber in XML-Datei können Sie tun 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

Sorry, wenn wir so tun, werden wir noch in der Lage sein, in den EditText auch in deaktivierten Modus einzugeben. Ich kann das nicht als eine Antwort akzeptieren, obwohl es dem Benutzer ein Gefühl geben kann, dass er nicht in der Lage sein kann, in edittext einzugeben – SKT

+0

@ user1172936 Siehe ich meine Antwort aktualisieren –

+0

Was ich tun möchte, ist nur durch Code. Denn wenn ich diesen Knopf erneut antippen. Ich möchte die Eigenschaft des Editiertext so machen, wie sie vorher war (konnte nicht hineintippen) Also kann ich nicht für xml gehen ... Aber ich werde prüfen, ob es irgendeine Eigenschaft wie editierbar im Java-Code gibt ... gemein, wenn du das tust finden Sie eine Antwort bitte helfen Sie mir, indem Sie es veröffentlichen ... Danke – SKT

3

Sie können diese verwenden:

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

Ich denke, Rainais Antwort ist richtiger. Das wird den ursprünglichen Keylistener des EditText – SKT

+0

ich tray rainai Methode behalten, aber es funktioniert nicht für mich, also ich aber diese Methode, weil es funktioniert. :) –

+0

rainais Methode hat auch nicht für mich funktioniert. Dieser hat funktioniert. – Rishabh876