У меня есть класс CustomDialog
, который расширяет DialogFragment.
. Я переопределяю метод onCreateDialog
, чтобы получить нужный диалог.
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
dialog = new Dialog(activity, styleId);
view = activity.getLayoutInflater().inflate(layoutId, null);
dialog.setContentView(view);
if (listener != null) {
listener.onViewInit(view, this);
}
return dialog;
}
Это код создания пользовательского диалога. После того, как представление раздуто, я вызываю метод слушателя listener.onViewInit(view, this)
типа OnViewInitListener
, который является интерфейсом и расширяет Serializable, чтобы привязать пользовательский код к представлению (просмотр текстов, слушателей и т. д.), так что при вращении я хочу потерять логику нажатия кнопки.
@Override
public void onSaveInstanceState(Bundle bundle) {
bundle.putInt("layoutId", layoutId);
bundle.putInt("styleId", styleId);
bundle.putSerializable("listener", listener);
super.onSaveInstanceState(bundle);
}
public RsCustomDialog setOnListenerAssignment(OnViewInitListener listener) {
this.listener = listener;
return this;
}
Когда я реализую OnViewInitListener
из Activity, при изменении ориентации все работает так, как ожидалось: onCreateDialog
вызывается каждый раз, когда фрагмент воссоздается, и ошибок посылок нет, но когда я нажимаю кнопку истории приложений (справа)