Есть 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;
}
Продвижение своими сайтами как стратегия роста и независимости