Андроидный запрос пользователя с помощью диалога

Я хотел бы попросить пользователя дать мне вход в мое приложение для Android с помощью диалогового окна. это то, что я нашел:

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Title");
alert.setMessage("Message");
// Set an EditText view to get user input 
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String value = input.getText();
 // Do something with value!
 }
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int whichButton) {
 // Canceled.
}
});
 alert.show();

но это дает мне:

android.view.WindowManager $BadTokenException: Невозможно добавить окно - токен null не для приложения

Есть ли какие-либо проблемы с моим кодом, кажется, что в диалоговом окне передается пустой аргумент, но я не могу выяснить, в чем проблема.

2 ответа

Когда я запускал ваш код в новом проекте, он работал нормально. Вероятно, "this", который вы используете

  • не является деятельностью.
  • не является видом деятельности, то есть может существовать родительская активность. Если это дочерний элемент какой-либо активности, используйте getParent() вместо "this".
  • null

Надеюсь, что это поможет.


Я написал вспомогательный класс, который упрощает создание диалогового окна с несколькими строками кода.

PromptDialog dlg = new PromptDialog(MainActivity.this, R.string.title, R.string.enter_comment) {
 @Override
 public boolean onOkClicked(String input) {
 // do something
 return true; // true = close dialog
 }
};
dlg.show();

Просмотреть полный код = > Приглашение для Android

licensed under cc by-sa 3.0 with attribution.