Получить код клавиши 0 вместо 66 при нажатии Enter на клавиатуре моего компьютера - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть простое действие с EditText.Я хочу сохранить данные формы, когда пользователь вводит имя в EditText и затем нажимает Enter.

Все работает, кроме одной вещи.Переменная keyCode - это 0 вместо 66 (KeyEvent.KEYCODE_ENTER).

У кого-нибудь есть идеи, в чем проблема?

Мой макет xml:

<EditText
    android:id="@+id/etName"
    style="@style/EditTextFont"
    android:inputType="textPersonName" />

Моя активность:

private EditText etName;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.form);

    etName = (EditText) findViewById(R.id.etName);
    etName.setOnEditorActionListener(this);
}

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
   switch (v.getId()) {
   case R.id.etName:
      // actionId will be EditorInfo.IME_NULL if being called 
      // due to the enter key being pressed.
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
            (actionId == EditorInfo.IME_NULL)) {
         save();
         return true;
      }
   }
   return false;
}

С уважением, Маттиас

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Из документации Android :

public abstract boolean onEditorAction(TextView v, int actionId, KeyEvent event)

Вызывается при выполнении действия.

Параметры

v Вид, по которому щелкнули.

actionId Идентификатор действия. Это будет либо указанный вами идентификатор, либо EditorInfo.IME_NULL, если он вызывается из-за нажатия клавиши ввода.

событие Если это вызвано клавишей ввода, это событие; в противном случае это значение равно нулю.

Возвращает

Верните true, если вы выполнили действие, иначе false.

0 голосов
/ 17 февраля 2012

Попробуйте использовать клавишу ввода SDK вместо клавиши клавиатуры компьютера.

...