2010-04-22 2 views
0

Я хочу, чтобы сообщение тоста отображало «Введите только числовые символы» всякий раз, когда пользователь нажимает нечисловую клавишу на виртуальной клавиатуре. Любая подсказка?Как проверить ключи на виртуальной клавиатуре на Android?

+0

Вы хотите, чтобы валидатор для ввода? – Macarse

ответ

1

Вы можете настроить TextWatcher и обрабатывать каждый символ с помощью события onTextChanged(), когда пользователь вводит и игнорирует нежелательные символы по типу пользователя.

Неплохой дизайн пользовательского интерфейса, позволяющий выводить сообщения пользователю на каждое нажатие клавиши, вместо этого вы можете просто сообщить им об этом в учебнике или введении.

1

or use android: inputType = "number" в вашем XML-файле. Это сделает так, что вы сможете вводить только цифры. См. «Структура метода ввода» в книге Марка Мерфи или поиск на сайте разработчика.

+0

Этот вид работ, которые я никогда раньше не пробовал, но теперь проблема заключается в том, что пользователь получает цифровую клавиатуру с символами, которые не регистрируются как допустимый ввод, и пользователь может также переключиться на клавиатуру персонажа, где любой из ключи не будут работать :). –

+0

Спасибо за ваш вклад. –

0

Поскольку это не событие для виртуальной клавиатуры, я нашел способ обойти для проверки ключей, используя событие TextChanged, Вот как я это сделал:

import android.app.Activity; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.View.OnKeyListener; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class ShowKeypad extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     EditText emailTxt = (EditText) findViewById(R.id.editText); 

     emailTxt.addTextChangedListener(new TextWatcher() 
     { 
       public void afterTextChanged (Editable s){ 
         Log.d("seachScreen", "afterTextChanged"); 
       } 
       public void beforeTextChanged (CharSequence s, int start, int 
         count, int after) 
       { 
         Log.d("seachScreen", "beforeTextChanged"); 
       } 
       public void onTextChanged (CharSequence s, int start, int before, 
         int count) 
       { 
         Log.d("seachScreen", s.toString()); 
       } 

     final TextView tv = (TextView)findViewById(R.id.tv); 
     /*emailTxt.setOnKeyListener(new OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       //Log.i("Key Value", String.valueOf(keyCode)); 
       //Toast.makeText(ShowKeypad.this, String.valueOf(keyCode), Toast.LENGTH_SHORT); 
       Log.i("Key Value:", String.valueOf(keyCode)); 

       return true; 
       }; });*/ 

     }); 
    } 

} 

Есть ли лучше способ подтверждения? Пожалуйста, оставьте свой отзыв.

Смежные вопросы