Handle Enter-Taste in EditText über verschiedene Geräte

Im Moment behandle ich die Enter-Taste in meinen EditText-Feldern mit einem onEditorActionListener und betrachte die Action ID für IME_NULL. Es funktioniert gut für alle meine Benutzer außer einem. Sie hat einen Xperia Arc.

TextView.OnEditorActionListener keyListener = new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_NULL){ if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){ ((EditText) findViewById(R.id.etPass)).requestFocus(); } if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etPass))){ logon(); } } return true; } }; 

Nach dem Lernen über das Problem, versuchte ich einen anderen Ansatz, indem ich einen OnKeyListener und suche nach dem Key Event ACTION_DOWN dann die Überprüfung der Keycode, wenn es KEYCODE_ENTER passte.

  • Anti-Hack-Lösung für einen geheimen Schlüssel in Android App?
  • Handhabung von Medientasten in Android 5.0 Lollipop
  • Pinch-Zoom verkleinert nicht auf die nächste Fragment-Seite
  • Show-up-Button in actionBar in Subscreen-Einstellungen
  • EditText auf einem Popup-Fenster
  • Code-Beispiele für Android Bluetooth-Programmierung
  •  EditText etUserName = (EditText) findViewById(R.id.etUser); etUserName.setOnKeyListener(new OnKeyListener() { public boolean onKey(View view, int keyCode, KeyEvent event){ if (event.getAction() == KeyEvent.ACTION_DOWN){ switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){ ((EditText) findViewById(R.id.etPass)).requestFocus(); } return true; default: break; } } return false; } }); 

    Auch kein Würfel. Ich bin sofort in einem Verlust. Es gibt viele apps da draußen, die die Enter-Taste gut funktionieren Was machen sie anders?

  • Ersetzen Sie selektive Bilder programmgesteuert
  • CSS3 Animation flackert auf Android 2.2 (webkit-transform: übersetzen (..) Skala (..) zur gleichen Zeit)
  • Wie implementiere ich Rate It-Funktion in Android App
  • ObjectAnimator animierte LinearLayout Breite
  • Testen Hintergrund Farbe Espresso Android
  • Füge clickListner für die Schaltfläche in einem cardView hinzu, das mit einem recyclerView belegt ist
  • 3 Solutions collect form web for “Handle Enter-Taste in EditText über verschiedene Geräte”

    Ich habe herausgefunden, wie man es zur Arbeit bringt.

    Ich musste android hinzufügen: singleLine = "true" zum EditText-Tag im Layout-XML (abwechselnd kannst du es mit setSingleLine () im Code setzen). Dies zwingt den Bearbeitungstext, nur eine Zeile zu verwenden, und der Fokus geht zur nächsten EditText-Box.

    Versuchen Sie diese Lösung: (Ich habe es nicht getestet)

    EditText Sie die folgende Eigenschaft zu Ihrem EditText

     android:imeOptions="actionNext" 

    Jetzt können Sie die folgende onEditorAction

     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_NEXT) { // Program Logic Here return true; } return false; } 

    Für einige zusätzliche Funktionalität können Sie Ihr Passwort EditText auf:

     android:imeOptions="actionDone" 

    So können Sie dann einfach so etwas haben:

     TextView.OnEditorActionListener keyListener = new TextView.OnEditorActionListener(){ public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { if(actionId == EditorInfo.IME_ACTION_NEXT) { ((EditText) findViewById(R.id.etPass)).requestFocus(); } if (actionId == EditorInfo.IME_ACTION_DONE) { logon(); } return true; } }; 
     (EditText) passwordView = (EditText) findViewById(R.id.password); passwordView.setImeOptions(EditorInfo.IME_ACTION_DONE); passwordView.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { String input; if(actionId == EditorInfo.IME_ACTION_DONE) { input= v.getText().toString(); Toast toast= Toast.makeText(LogIn.this,input, Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); return true; } return false; } }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.