Диалог нулевой после изменения ориентации в окне просмотра
Каждый раз, когда я пролистываю, будет загружаться новая страница, теперь у меня все сначала работало в портрете, и теперь я пытаюсь заставить его работать с пейзажем и портретом. Но когда я поверну экран, я получу NullPointerException
на моем Dialog
,
Функция, вызывающая его внутри MainActivity
внутренний класс FragmentStatePagerAdapter
:
@Override
public void onPageSelected(int position)
{
// TODO Auto-generated method stub
currentSelectedFragmentPosition = position;
frag.onPageVisible(currentSelectedFragmentPosition);
frag2.onPageVisible(currentSelectedFragmentPosition);
frag3.onPageVisible(currentSelectedFragmentPosition);
}
Функция внутри фрагмента:
public void onPageVisible(int position)
{
startNewAsyncTask();
}
Диалог создается внутри onCreateView
и регистрирует, что это не нуль. Когда я захожу внутрь onPageVisible
он возвращается нулевой, и когда я делаю mProgress = new ProgressDialog(getActivity());
внутри onPageVisible
он по-прежнему будет давать нулевой указатель, но вместо этого в этой строке.
Я действительно не понимаю, почему это должно быть установлено в onCreateView
,
2 ответа
Если вы не хотите воссоздавать свою деятельность или фрагмент, просто переопределите метод onConfigurationChanged(){} в вашем классе, который расширяет класс Activity.
Этот метод будет сохранять состояние вашего приложения всякий раз, когда вы меняете ориентацию с книжной на альбомную или наоборот.
Предполагая, что вы используете DialogFragment
Android заново создаст для вас диалог в onCreate
, Вы можете найти существующий диалог по тегу в onCreate, если ваш savedInstanceState
не является нулевым