Есть BefFragment extends DialogFragment
, в котором переопределен метод onResume
@Override
public void onResume() {
super.onResume();
int userDisplayWidth = getActivity().getResources().getDisplayMetrics().widthPixels;
int userDisplayHeight = getActivity().getResources().getDisplayMetrics().heightPixels;
int width = Constants.BEF_WIDTH *userDisplayWidth/ Constants.DISPLAY_WIDTH;
int height = Constants.BEF_HEIGHT *userDisplayHeight/ Constants.DISPLAY_HEIGHT;
getDialog().getWindow().setLayout(width, height);
}
Есть class Fragment extends BefFragment
, в котором метод onResume
должен быть таким, как в классе DialogFragment
, а не таким, как в классе BefFragment
, т.е. в это методе не должны изменяться параметры контейнера диалога (ширина и высота). Как это сделать?
Пробовала переопределить в классе Fragment
метод onResume
так:
@Override
public void onResume() {
super.onResume();
}
проблема не решена.
Дело в том, что класс BefFragment
и класс Fragment
используют один и тот же layout-ресурс для разметки, но в первом случае layout занимает почти весь экран, а во втором встроен в активити, где занимает 1/10 экрана. И, если метод onResume
в классе BefFragment
не переопределять, тогда окно BefFragment
слишком большое и не помещается на экран, а, если переопределить и рассчитать размеры контейнера для фрагмента, как я написала, то тогда возникает проблема с формированием layout, который содержит экземпляры класса Fragment
: ошибка NullPointerException
со ссылкой на строку
getDialog().getWindow().setLayout(width, height);
в BefFragment
и на super.onResume();
в самом Fragment
.
Заведите метод-флаг (возвращает boolean
) внутри BefFragment
с дефолтным значением, например, true
, который Вы переопределите внутри Fragment
и станете возвращать значение false
. Внутри метода onResume
в BefFragment
делайте проверку. Должно получиться примерно это:
BefFragment
protected boolean checkPassed() { //примерное название метода
return true;
}
@Override
public void onResume() {
super.onResume();
if (checkPassed()) {
// тут ваш код
}
}
Fragment
@Override
protected boolean checkPassed() {
return false;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь разобраться с работой RecyclerViewAdapter в связке с CursorLoader
Размер коллекции после инициализации меняться не можетПосле того как количество элементов достигло максимума-при добавлении нового элемента...
Как значение в базе данных Firebase сделать переменной в андроид чтобы сравнить значения?