DialogFragment не пустой конструктор

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Midvidko
Сообщения: 11
Зарегистрирован: 06 дек 2013, 23:08

DialogFragment не пустой конструктор

Сообщение Midvidko » 17 июн 2015, 12:07

Почему нельзя в конструкторе DialogFragment передавать параметры? Мне нужно передать интерфейс, как это правильно сделать?
Делать implement интерфейса в активити и получать его из getActivity не годится т.к. должны назначаться разные слушатели в зависимости от нажатой кнопки создающей этот диалог.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: DialogFragment не пустой конструктор

Сообщение klblk » 17 июн 2015, 14:05

Нельзя передавать в конструктор, потому что система при восстановлении фрагмента (например после поворота экрана) вызывает конструктор без параметров, как следствие ваш слушатель потеряется. Хотя на практике вроде бы вылетит Exception.

Попробую предложить варианты решения:
1) Передавать через аргументы нужную информацию и в зависимости от них формировать интерфейс уже в самом фрагменте.
2) Сделать у фрагмента метод setMyInterface()
3) Унифицировать интерфейс заимплеменченный у Activity (завести дополнительную int переменную значение которой будет меняться в зависимости от нажатой кнопки и в реализациях методов интерфейса switch-case'ом все разруливать)
4) *тут еще какой-нибудь более правильный метод*

Ответить