如何验证Android上虚拟键盘上的键?

时间:2010-04-22 13:29:57

标签: android validation

每当用户按下虚拟键盘上的非数字键时,我希望显示“仅输入数字字符”的Toast消息。任何线索?

3 个答案:

答案 0 :(得分:1)

您可以设置TextWatcher并使用onTextChanged()事件处理每个字符,同时用户键入并忽略用户键入的不需要的字符。

在每次按键时不断向用户弹出消息的UI设计不是很好,而是可以在教程或介绍中让他们知道。

答案 1 :(得分:1)

或在xml文件中使用android:inputType =“number”。这将使您只能输入数字。请参阅Mark Murphy的书中的“输入法框架”,或在开发者网站上搜索。

答案 2 :(得分: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;
                }; });*/

        }); 
    }

}

有没有更好的验证方法?请提供反馈。