У меня есть собственный диалог, полученный из DialogFragment.
Когда пользователь нажимает кнопку «ОК», мне нужно сохранить информацию, которая находится на экране.
Поэтому я отклонил вызовы PositiveButton и реализовал метод onDismiss для сохранения данных.
В методе onDismiss мне нужно получить данные из editView, который находится в диалоговом окне. Я использую getView().findViewByID для получения editView, но метод GetView() возвращает null.
Вот мой код:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.dialog_signin, null))
.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().dismiss();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoginDialogFragment.this.getDialog().cancel();
}
});
return builder.create();
}
@override
public void onDismiss(){
EditView view = (EditView)getView().findViewByID(R.id.edit);
}
Я знаю, что могу сохранить представление, увеличенное в OnCreateDialog, как атрибут, но мне это не кажется правильным.
Как правильно получить вид с экрана в onDismiss?
Ps: место, где я работаю, не позволяет мне публиковать мой код, поэтому я взял код из Google и изменил его, чтобы он был как можно ближе к моему коду.