2016-05-04 8 views
1

Ich habe versucht, dies für die letzten drei Stunden zu arbeiten, und ich brauche jetzt deine Hilfe. Ich möchte einfach den Text aus meinem editText aufzuzeichnen, wenn der Benutzer „done“ klickt:Warum kann ich keinen Text schreiben?

e.setOnKeyListener(new View.OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      Log.v(TAG, "KEYCODE: " +keyCode); 
      Toast.makeText(MainActivity.this, "" +keyCode, Toast.LENGTH_SHORT).show(); 

      if ((keyCode == EditorInfo.IME_ACTION_DONE) && (event.getAction() == KeyEvent.ACTION_DOWN)) { 

       Log.v(TAG, "DONE!"); 
       Toast.makeText(MainActivity.this, "" +e.getText(), Toast.LENGTH_LONG).show(); 

       return false; 
      } 
      return false; 
     } 
    }); 

Hier ist der XML:

<EditText 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/editText" 
     android:layout_alignBottom="@+id/textView4" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_toRightOf="@+id/textView4" 
     android:layout_toEndOf="@+id/textView4" 
     android:imeOptions="actionDone" 
     android:inputType="text" 

     /> 

Das Problem ist, dass mein onKey nicht einmal irgendwelche Toast Anzeige, und ich kann die Benutzereingabe nicht erhalten, wenn sie auf Fertig klicken. Ich habe versucht, so viele Dinge in meiner if-Anweisung zu ändern, aber jetzt wird auch die onKey nicht aufgerufen. Was mache ich falsch?

Vielen Dank für die Zeit nehmen, meine Frage zu beantworten :)

Antwort

3

Warum ist Ihr Code nicht in den docs beantwortet arbeitet.

Betätigung der einzelnen Tasten auf Soft-Input-Methoden sind nicht erforderlich, um die Methoden in diesem Hörer auslösen, und in der Tat sind entmutigt, dies zu tun. Die Standard-Android-Tastatur wird diese für keinen Schlüssel zu irgendeiner Anwendung, die auf Jelly Bean oder später abzielt, auslösen, und wird sie nur für einige Tastendrücke an Anwendungen liefern, die auf Ice Cream Sandwich oder früher zielen, .

Wenn Sie versuchen, die Benutzereingabe zu erhalten, wenn sie fertig klicken, Sie so etwas wie

e.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      Toast.makeText(MainActivity.this, e.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

Dank soviel versuchen können, gelöst Sie mein Problem, das ich für ein paar Stunden stecken geblieben war. Wofür sollte onKeyListener dann verwendet werden? –

+0

Erneut von der Dokumentation 'sollte es nur für Fälle verwendet werden, in denen eine Anwendung eine eigene Bildschirmtastatur hat und auch harte Tastaturereignisse verarbeiten soll, um sie zu entsprechen. Also rate ich mal, wenn Sie eine eigene Tastatur erstellen, dann könnte dies vielleicht verwendet werden, um die Tastaturereignisse anzupassen. – Antrromet

+0

Wenn ich die Tastatur verstecken möchte, nachdem sie fertig sind, kann ich einfach falsch zurückgeben, oder? –

Verwandte Themen