Я пытаюсь создать диалоговое окно предупреждения с EditTextобъектом. Мне нужно программно установить исходный текст EditTextфайла. Вот что у меня есть.
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// ...Irrelevant code for customizing the buttons and title
AlertDialog alertDialog = dialogBuilder.create();
LayoutInflater inflater = this.getLayoutInflater();
alertDialog.setContentView(inflater.inflate(R.layout.alert_label_editor, null));
EditText editText = (EditText) findViewById(R.id.label_field);
editText.setText("test label");
alertDialog.show();
Что мне нужно изменить, чтобы у меня был действующий EditTextобъект?
[редактировать]
Итак, user370305 и другие указали, что я должен использовать alertDialog.findViewById(R.id.label_field);
К сожалению, здесь есть еще одна проблема. По-видимому, установка представления содержимого по AlertDialogпричинам, которые приводят к сбою программы во время выполнения. Вы должны установить его на строителе.
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
// ...Irrelevant code for customizing the buttons and title
dialogBuilder.setView(inflater.inflate(R.layout.alert_label_editor, null));
AlertDialog alertDialog = dialogBuilder.create();
LayoutInflater inflater = this.getLayoutInflater();
EditText editText = (EditText) alertDialog.findViewById(R.id.label_field);
editText.setText("test label");
alertDialog.show();
К сожалению, при этом alertDialog.findViewById(R.id.label_field);теперь возвращается null.
[/редактировать]
dialogBuilder.setView(R.layout.dialog_layout);