#android #android-edittext
#Android #android-edittext
Вопрос:
Я хочу получить пользовательский ввод с помощью всплывающего диалогового окна. Я могу показать диалоговое окно с редактируемым текстом, и пользователь может ввести входные данные. Но когда я пытаюсь получить это значение, я просто получаю null.
Это достаточно простой код. Вероятно, я здесь упускаю что-то действительно элементарное. Не уверен, что!
private void getUserInput(String prompt) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(prompt);
final EditText inputBox = new EditText(this);
builder.setView(inputBox);
builder.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
String str = "";
Log.d(DEBUG_TAG, "OK button clicked");
if (inputBox.getText() != null) { //PROBLEM: why is inputBox.getText null??
str = "null";
} else {
str = inputBox.getText().toString();
}
Log.d(DEBUG_TAG, "input text >>>" str);
dialog.dismiss();
}
});
builder.show();
}
Комментарии:
1. Вы действительно установили текст в EditText?
2. @AedonEtLIRA: пользователь вводит текст в диалоговом окне редактирования.
Ответ №1:
Где у вас
if (inputBox.getText() != null)
вы устанавливаете str равным null, но проверка InputBox.getText() НЕ равна null; разве это не должно !=
быть == null
? (Хотя, на самом деле, вам, вероятно, следует проверить inputBox.getText().equals("")
.)
Комментарии:
1. Нет, то, что у него есть, верно. Он проверяет, чтобы убедиться, что строка NOT null.
.equals
будет использоваться для сравнения строк.2. За исключением того, что если
inputBox.getText() == null
затем текущий код попытается вызвать,inputBox.getText().toString()
который будетnull.toString()
и завершится.3. Спасибо, спасибо, спасибо! Такой «Дух!» момент! Мне действительно следовало больше спать прошлой ночью 😉 .