Я не могу ввести ключ Go

Я новичок в Android, но не в Java, и у меня проблема.

Потребовались часы потерь в моем приложении, которое игнорирует клавиатуру для ввода, и вы вводите код ниже. Я хочу, чтобы, когда я что-то делаю, вход и выход. Так как это кажется избыточным и имеет не оптимальную кнопку ОК, когда у вас есть ОК в самом Enter.

    t_Num = (EditText) findViewById(R.id.eTT);
    ...
    t_Num.setFocusableInTouchMode(true);
    t_Num.requestFocus();
    t_Num.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            System.out.println("entra en Onkey" + event.toString());
            if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                    (keyCode == KeyEvent.KEYCODE_ENTER)){
                    tV.setText("OK");
                    System.out.println("Press OK");

                    return true;
                }
            return false;
        }
    });

С этим кодом я получаю спам при нажатии клавиши, но не спам при нажатии клавиши OK.

И XML:

<EditText
    android:layout_width="75dp"
    android:layout_height="wrap_content"
    android:inputType="numberSigned|phone"
    android:digits="-0123456789"
    android:ems="10"
    android:id="@+id/eTT"
    android:imeActionLabel="@string/OK"
    android:maxLength="6"
    android:maxLines="1"
    android:layout_alignBottom="@+id/tV2_1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_toRightOf="@+id/btnOk"
    android:layout_toEndOf="@+id/btnOk" />

спасибо за помощь
PD: я ищу на этой странице, но не получаю решения, font1 , font2 и т. д. ..
Пользуюсь поиском :)


person CodeNoob    schedule 29.12.2014    source источник
comment
см. developer.android.com/reference/android/widget/   -  person njzk2    schedule 30.12.2014
comment
Но я использую EditText, а не TextView, эти входы равны? EditText не может редактировать сообщение, но TextView может добавлять текст пользователю, но спасибо.   -  person CodeNoob    schedule 30.12.2014


Ответы (1)


Попробуй это:

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_GO) {
                //your code
                return true;
            }
            return false;
        }
    });

Это если editText имеет

android:imeOptions="actionGo"

в его xml. То же самое должно применяться с Enter. Просто измените действие EditorInfo.

EditText является подклассом TextView.

person DejanRistic    schedule 29.12.2014
comment
Отлично, но я добавлю, что IME_ACTION_SEND лучше всего подходит для моего применения. Клавиша действия выполняет следующую операцию, переводя пользователя в следующее поле, которое будет принимать текст. Соответствует IME_ACTION_NEXT этой ссылке для получения дополнительной информации - person CodeNoob; 30.12.2014