EditText в Android Alert Dialog - PullRequest
       7

EditText в Android Alert Dialog

0 голосов
/ 15 апреля 2019

У меня есть метод для создания диалога предупреждений во фрагменте

private void alertDialog() {
final EditText editTextField = new EditText(this.getContext());
AlertDialog dialog = new AlertDialog.Builder()
    .setTitle("Title")
    .setMessage("Message")
    .setView(editTextField)
    .setPositiveButton("OK", this)
    .setNegativeButton("Cancel", null)
    .create();
dialog.show();
}

Затем я реализовал DialogInterface.OnClickListener

public void onClick(DialogInterface dialogInterface, int i){
 switch(i){
    case DialogInterface.BUTTON_POSITIVE:
        String name = String.valueOf(editTextField.getText());
        break;
    case DialogInterface.BUTTON_NEGATIVE:
        break;
   }
 }

Однако editTextField в onClickметод не может ссылаться на диалог оповещения.Есть ли способ решить это?Или единственный способ - создать макет с редактируемым текстом и setView в диалоговом редакторе предупреждений?

1 Ответ

0 голосов
/ 15 апреля 2019

Причина, по которой вы не можете получить доступ к editTextField, заключается в том, что он объявлен как локальная переменная в методе alertDialog () .

Если вы хотите сохранить эту переменную как локальную, вам нужно установить метод слушателя непосредственно в этом методе, как я покажу ниже.

private EditText = new EditText(this);
AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("Title")
                .setMessage("Message")
                .setView(inputEditTextField)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String editTextInput = inputEditTextField.getText().toString();
                        Log.d("onclick","editext value is: "+ editTextInput);
                    }
                })
                .setNegativeButton("Cancel", null)
                .create();
dialog.show();

В противном случае вы можете заменить эту строку из метода alertDialog () на следующую строку

editTextField = new EditText(this.getContext());

вам нужно добавить эту строку выше метод onCreate

EditTextField editTextField;
...