确保EditText仅返回单个小写字母

时间:2010-12-16 16:09:06

标签: android input filter android-edittext

我正在将我的旧Hangman java游戏移植到android上,以便在1月份进行编程决赛。我已经完成了大部分工作,但我发现我没有对无效字符进行任何检查。除了小写字母外,无效字符基本上都是一切。我一直在考虑手动将所有有效字符输入数组并检查每个输入。有没有更简单的方法呢?

以下是从适当的EditText中捕获输入的代码:

final EditText guessedLetter = (EditText) findViewById(R.id.LetterInput);
final Button enterGuess = (Button) findViewById(R.id.GuessButton);
      enterGuess.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
            String guess = guessedLetter.getText().toString(); //Save text to a string
            guessedLetter.setText(""); //Clear EditText after input has been saved to a String
            editor.putString(GAME_LOGIC_GUESS, guess);
            editor.commit();
            Log.i(GAME_DEBUG, "Guess: " + guess + " parsed to guess()");
            guess();
            checkWin();
            updateDisplay();
            }
            }});

再次感谢!

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可能希望首先使用TextView的setKeyListener方法设置KeyListener。然后,您将覆盖您设置的KeyListener的onKeyDown方法并监听输入。如果键入的内容不是字符(即:A - Z),那么您将丢弃输入并取消事件。如果输入的内容是字符,则应在将字符添加到文本框之前将其转换为小写。

修改

注意到你没有在按键上执行此操作,而是用户必须点击“确定”。这会让您的生活更轻松。

当用户按下“确定”时,检查文本是否是有效字符(即:只有一个字符,介于A - Z之间)。如果不是,请对用户大喊大叫。如果是,请检查它是否为小写或自己将其转换为小写。

http://developer.android.com/reference/android/widget/TextView.html#setKeyListener(android.text.method.KeyListener

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Character.html#toLowerCase(char

答案 2 :(得分:0)

我发现对于这个特定问题,最简单的解决方案是只填充有效字符的数组。因此,不是将无效的字符和符号列入黑名单,而是将相对较少的有效字符列入白名单。

如果有人在将来需要它,那么这是数组:

final String[] allowedChars = {"a", "b", "c", "d", "e", 
                "f", "g", "h", "i", "j", 
                "k", "l", "m", "n", "o", 
                "p", "q", "r", "s", "t", 
                "u", "v", "w", "x", "y", 
                "z"};

使用循环进行比较:

for(int n = 0; n < allowedChars.length; n++){
        if(allowedChars[n].equalsIgnoreCase(guess)){
        //Game logic here
        }}