Ausführen eines Befehls mit Enter-Button

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ausführen eines Befehls mit Enter-Button

    Moin, ich möchte die Eingabe in einem Edit Text durch den User durch drücken der Enter Taste abschließen, also durch einen OnKeyListener eine Funktion ausführen lassen. Ich habe schon einen Code geschrieben und weiß nicht, warum dieser nicht funktioniert.
    Wenn mir jemand den Fehler zeigen kann, wäre ich sehr dankbar :)

    Das ist mein Code




    und hier die Imports
  • eventuell könnte der Fehler daran liegen, dass ich mit verschiedenen Layouts arbeite und der KeyListener nicht mehr aktiv ist sobald ich ihn brauche, weil ich dann schon wieder in nem anderen Layout bin (ist irgendwie schwierig zu erklären was ich meine). Dann müsste ich wissen, wie ich es schaffe, dass dieser KeyListener die ganze zeit aktiv ist, in dem Layout in dem ich den brauche?
    Weiß einer, wie ich eine Funktion ausführen lassen kann, wenn ein bestimmtes Layout aktiv ist?
    Also nur wenn es daran liegt und der Code oben richtig sein sollte.
    Gruß, Merlinus98
  • Hallo
    wenn du eine TextView als Button benutzen willst, gebauchte

    ihn auch so. Also benutze den OnClickListner wie bei einem Button und nicht den KeyListner.

    Bei einen EditText würde ich den TextWatcher benutzen und aus werten der wird immer aufgerufen wenn etwas in die Zeile eingegeben wird (bei jeden Buchstaben)
    Ein Feedback auf Tipps ist auch schön. :P
  • Quellcode

    1. ed.addTextChangedListener(new TextWatcher() {
    2. @Override
    3. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    4. }
    5. @Override
    6. public void onTextChanged(CharSequence s, int start, int before, int count) {
    7. String c = s.toString();
    8. if (c.substring(c.length()-1).equals("A")) {
    9. // hier dein Code
    10. }
    11. }
    12. @Override
    13. public void afterTextChanged(Editable s) {
    14. }
    15. });
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()

  • Aber was bewirkt denn der Code den du oben geschrieben hast? Fragst du da ab, ob der vorletzte Buchstabe des Inputs vom EditText ein "A" ist? Also beim Wort "Hallo" wäre demnach c.Substring(c.length()-1) ein "l" oder?
    Und damit könnte ich dann Testen, ob der letzte "Buchstabe" meines EditTextes die Enter-Taste wäre? Weil das ist ja kein Zeichen an sich.
    Verstehst du was ich meine? :rolleyes:
  • moin nochmal,
    erstmal nochmal vielen Dank für deine Hilfe. Sry, dass ich dich nochmal nerve^^. Das mit dem Enter erkennen funktioniert super. Allerdings wird er Code im inneren der If-Abfrage immer doppelt ausgeführt. Erst dachte ich, es liegt an meinem Code. Dann habe ich den Code (zum checken des Enter-Inputs) allerdings einmal in einem neuen Dokument einzeln, ohne weiteren Code geschrieben und auch dort wird er doppelt ausgeführt. Hast du eine Idee, woran das liegen könnte?
  • Halo da hast du aber nicht gerade viel gesucht.

    Am Anfang hattest du ja schon einen ähnlichen Code. Wahrscheinlich nur einfach kopiert aber nicht verstanden.

    Schaue dir an was KeyEvent alles beinhaltet.

    developer.android.com/referenc…KeyEvent.html#ACTION_DOWN

    Du musst also entweder auf das Drücken einer Taste oder auf das Loslassen einer Taste prüfen.

    Und auf die richtige Taste was ist daran so schwer.

    Das hattest du ja fast. Nur dein Switch ohne das brack wird nie so arbeiten wie du es erwartest. Du solltest dir die Java Grundlagen zu switch noch mal ansehen.

    In dem Lintner bekommst du den Keycode und das Event. Im Event ist die Action und auch nochmal der Keycode.Was du prüfen sollst.

    So hier ein Beispiel was beides Prüft mit einem einfachen If.

    Quellcode

    1. ed= findViewById(R.id.editText);
    2. ed.setOnKeyListener(new View.OnKeyListener() {
    3. @Override
    4. public boolean onKey(View v, int keyCode, KeyEvent event) {
    5. if (keyCode== KEYCODE_ENTER & event.getAction()== KeyEvent.ACTION_DOWN)
    6. {
    7. Log.i("test", "KeyCode is Enter");
    8. }
    9. return false;
    10. }
    11. });
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P