Android введите прослушиватель ключей

Может ли кто-нибудь помочь мне с программной клавиатурой, чтобы ввести прослушиватель ключей?

Мне нужен прослушиватель клавиш ввода, такой как прослушиватель кнопок, который будет иметь несколько прослушивателей редактируемого текста внутри, как это

enterkey.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) { 
        if(editext1.getText().toString().equalsIgnoreCase("test1")) {
            button3.performClick();
        }
        if(editext1.getText().toString().equalsIgnoreCase("test2")) {
            button4.performClick();
        }
    }
);

Мне также нужно знать, правильно ли что-то подобное?

if(editext1.getText().toString().equals.null)) {
       testwrong.setText("Wrong"); 

Теперь я попытался использовать этот код, но продолжаю получать нулевое значение, когда нажимаю ввод? Может ли кто-нибудь предложить решение, чтобы избежать этого?

editext.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_ENTER) {
            if ("test1".equalsIgnoreCase(anstext.getText().toString())) {
                but4.performClick();
            }
        } else if ("test2".equalsIgnoreCase(editext.getText().toString())) {
            but5.performClick();
        }
        if ("test5".equalsIgnoreCase(editext.getText().toString())) {
            but6.performClick();
        }
        if ("test7".equalsIgnoreCase(editext.getText().toString())) {
            but7.performClick();
        }
        if (editext.getText().toString() != null) {
            testwrong.seText("wrong");
        }
        return true;
    }
});

person C0dexe    schedule 17.10.2012    source источник
comment
Пожалуйста, отформатируйте код перед публикацией.   -  person Ragunath Jawahar    schedule 17.10.2012


Ответы (3)


вы можете использовать это для прослушивания событий клавиатуры

http://developer.android.com/reference/android/inputmethodservice/KeyboardView.OnKeyboardActionListener.html

person Amit Hooda    schedule 17.10.2012
comment
Пожалуйста, предоставьте больше, чем просто ответы по ссылкам, так как ссылки могут ломаться или их содержание может меняться со временем. - person TheIT; 23.05.2018

В вашем EditText вы должны указать действие клавиатуры, используя imeOptions.

<EditText
       android:id="@+id/query"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:imeOptions="actionGo"
       android:inputType="text" />

И в вашем классе Activity:

 EditText editText = (EditText) findViewById(R.id.query);
 editText.setOnEditorActionListener(new OnEditorActionListener() {
            public boolean onEditorAction(TextView v, int actionId,
                    KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_GO) {

                        return true;
                    }
                    return false;
                }
            });
person Sabre    schedule 17.10.2012

Если вы хотите поймать пользователя, нажмите Enter, зарегистрируйтесь onKeyListener на своем Edittext

  yourEditText.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode==KeyEvent.KEYCODE_ENTER) { //Whenever you got user click enter. Get text in edittext and check it equal test1. If it's true do your code in listenerevent of button3
                    if("test1".equals(edt.getText().toString())) {
                        //paste your code in button3 listener here
                        }
                }

}
    )

Эта часть неверна.

if(edittext1.getText().toString().equals.null)) { testwrong.setText("Неправильно");

вы должны измениться на

if (editext1.getText().toString() != null && !editext1.getText().toString().isEmpty()) {
  // doSomething
}
person Trung Nguyen    schedule 17.10.2012
comment
Мне это нравится, но как я могу получить, если текст будет отображаться в текстовом поле редактирования после нажатия клавиши ввода? - person C0dexe; 17.10.2012
comment
Вы хотите получить текст в EditText в тот момент, когда пользователь нажимает Enter? - person Trung Nguyen; 17.10.2012
comment
Я имею в виду, если в текстовом поле редактирования есть слово test1, когда нажата клавиша ввода, затем выполните нажатие кнопки для кнопки 3, спасибо - person C0dexe; 17.10.2012
comment
Спасибо за это, я попробую это сегодня вечером - person C0dexe; 17.10.2012
comment
Я обнаружил, что получаю запрос на его возврат, я пробовал приведенный ниже код, но нулевое значение продолжало обрабатываться, когда я нажимал ввод. - person C0dexe; 18.10.2012
comment
@C0dexe: зайди в эту комнату. Я помогу тебе. - person Trung Nguyen; 18.10.2012
comment
давайте продолжим это обсуждение в чате - person C0dexe; 18.10.2012
comment
Будьте осторожны, кнопка «Назад» считается ключом. onKey() перехватит onBackPressed() и не позволит вам использовать кнопку "Назад" для выхода из приложения. - person user2968401; 09.04.2015
comment
Просто обратите внимание, что вам нужно проверить тип действия, иначе код будет вызываться дважды; один раз вниз и один раз вверх: keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN - person TheIT; 23.05.2018