我目前正在创建一个Hangman安卓应用程序,但我无法注册输入的字母并更新游戏。我将屏幕键盘上的一个字母输入到创建的EditText中,没有任何反应。
以下是我正在使用的代码:
// Setting up user input
input = (EditText) findViewById(R.id.inputguess);
input.setFocusable(true);
input.setFocusableInTouchMode(true);
//Getting user input
input.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
String temp;
String newLetter;
newLetter = input.getText().toString();
temp = (String)enteredText.getText();
if (temp.indexOf(newLetter.toUpperCase(Locale.ENGLISH)) >= 0) {
input.setText("");
return true;
}
input.setText(""); // clearing input
entered += newLetter.toUpperCase(Locale.ENGLISH); // adding inputted letter to the entered string
enteredText.setText(temp + newLetter.toUpperCase(Locale.ENGLISH));
word.setText(hideString(text, newLetter.toUpperCase(Locale.ENGLISH)));
我的EditText的XML代码如下:
<EditText
android:id="@+id/inputguess"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/guessedwords"
android:layout_alignLeft="@+id/button1"
android:layout_marginBottom="24dp"
android:ems="10"
android:hint="@string/guessletter"
android:inputType="text"
android:maxLength="1"
android:singleLine="true"
android:imeOptions="actionDone">
</EditText>
经过研究,我能想到的唯一原因是使用的听众类型,但我并不完全确定。任何帮助将不胜感激(如果我应该添加更多的代码,请告诉我。)
答案 0 :(得分:1)
实际上,OnKeyListener仅适用于硬件键盘。要使用软件(屏幕)键盘,您必须添加TextWatcher
editText.addTextChangedListener(new TextWatcher() { ... })