Android 如何允许用户输入';A';一次字母表?

Android 如何允许用户输入';A';一次字母表?,android,Android,这是一个刽子手游戏,我希望用户只能像'a'一样输入一次,然后第二次输入'a'时,就会出现一个祝酒词。我的代码有问题吗 String letter = enterletter.getText().toString(); char letterChar = letter.charAt(0); boolean check = false; enterletter.setText(""); char

这是一个刽子手游戏,我希望用户只能像'a'一样输入一次,然后第二次输入'a'时,就会出现一个祝酒词。我的代码有问题吗

     String letter = enterletter.getText().toString();
            char letterChar = letter.charAt(0);
            boolean check = false;
            enterletter.setText("");
            char array[] = new char[120];
            array[letterChar]++;

            if(array[letterChar] > 1){ //Here the codes not working
                Toast.makeText(getApplicationContext(),"You already enter this letter before!", Toast.LENGTH_LONG).show();
            }else {
                for (int i = 0; i < currWord.length(); i++) {
                    if (Character.toUpperCase(currWord.charAt(i)) == Character.toUpperCase(letterChar)) {
                        check = true;
                        charViews[i].setTextColor(Color.BLACK);
                        numCorr++;

                    }

                }
            }
String letter=enterletter.getText().toString();
char-letterChar=letter.charAt(0);
布尔检查=假;
enterletter.setText(“”);
字符数组[]=新字符[120];
数组[letterChar]++;
如果(数组[letterChar]>1){//这里的代码不起作用
Toast.makeText(getApplicationContext(),“您之前已经输入了此字母!”,Toast.LENGTH\u LONG.show();
}否则{
for(int i=0;i
用户只能像“A”一样输入,如果您想通过编程进行设置,并且不检查任何条件,则可以使用解决方案

EditText editText = new EditText(this);
int maxLength = 1;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
如果您想使用xml,您可以在EditText限制中使用这两行,并且仅用于字母表

android:maxLength="1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

希望有帮助。

用户只能像“A”一样输入,如果您想通过编程进行设置,并且不检查任何条件,则可以使用解决方案

EditText editText = new EditText(this);
int maxLength = 1;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});
如果您想使用xml,您可以在EditText限制中使用这两行,并且仅用于字母表

android:maxLength="1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
希望有帮助。

这里

char array[] = new char[120];
array[letterChar]++;
您正在创建一个初始化为全零的新数组,然后增加字符的计数。所以它总是1

您只需在更全局的位置分配一次阵列。类型为
char[]
也有点误导。这是因为
char
只是一个无符号的16位数字,您真正想要的是一个整数计数,而不是char。

这里

char array[] = new char[120];
array[letterChar]++;
您正在创建一个初始化为全零的新数组,然后增加字符的计数。所以它总是1


您只需在更全局的位置分配一次阵列。类型为
char[]
也有点误导。这是因为
char
只是一个无符号的16位数字,而您真正想要的是一个整数计数而不是char。

无需做更多的工作,只需将所有字符添加到一个字符串中,逗号(,)分隔,然后在输入新字符后检查它。 像贝娄

String allCharacters="";
    /**
     * Call this method where from entering character like editBox OnTextChange 
     */
    private void addCharacter(String charNew){
        if(allCharacters.trim().length()>0 && allCharacters.contains(","+charNew)){
            Toast.makeText(getApplicationContext(),"You already enter this letter before!", Toast.LENGTH_LONG).show();
        }else {
            allCharacters=allCharacters+","+charNew;
        }
    }

不需要做更多的工作,只需在一个字符串中添加所有字符,并用逗号(,)分隔,然后在输入新字符后检查它。 像贝娄

String allCharacters="";
    /**
     * Call this method where from entering character like editBox OnTextChange 
     */
    private void addCharacter(String charNew){
        if(allCharacters.trim().length()>0 && allCharacters.contains(","+charNew)){
            Toast.makeText(getApplicationContext(),"You already enter this letter before!", Toast.LENGTH_LONG).show();
        }else {
            allCharacters=allCharacters+","+charNew;
        }
    }