У меня странная проблема. Я использую Fragments в приложении с хостом FragmentActivity, в котором я реализовал внутренний class FragmentPagerAdapater
, который создает фрагменты и помещает их в вкладки моей активности.Fragment's onCreateView() заставляет мое приложение разбиться
В приложении мне нужно передать объект из моей активности в фрагменты. Я не совсем уверен, какой правильный способ сделать это, поэтому я импровизировал и пошел на статический фрагмент newInstance(Object obj)
в своих фрагментах. Этот метод просто вызывает конструктор Fragment по умолчанию и устанавливает переменную экземпляра для хранения объекта внутри фрагмента.
Теперь в методе Фрагмента createView()
я использую информацию об объекте экземпляра, чтобы заполнить макет. Это отлично работает, когда приложение запускается, но приложение падает, когда я меняю ориентацию экрана с портрета на пейзаж (или наоборот). Журналы указывают на исключение NullPointerException в экземпляре Object в createView()
. Я чувствую, что пропустил что-то на жизненном цикле, но я не могу найти ответ. Есть ли что-то особенное, чтобы мои Фрагменты сохранили свою переменную экземпляра, несмотря ни на что?
Вот пример кода, чтобы помочь вам понять, что вопрос:
public class MyFragment extends Fragment {
private Object obj;
public static MyFragment newInstance(Object obj) {
MyFragment fragment = new MyFragment();
fragment.setObject(obj);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_fragment, container, false);
MyType res = ((Type) (obj)).getSomething(); // This line causes the crash because obj is null when I switch to another orientation
// I Do something with res to fill rootView
return rootView;
}
private void setObject(Object obj) {
this.obj = obj;
}
}
// In the Activity I simply create the Fragment using
MyFragment fragment = MyFragment.newInstance(myObjectToPass);
Спасибо за вашу помощь!
мы должны увидеть код! –
crash => трассировка столбца. – njzk2