2016-11-17 2 views
0

Итак, если пользователь находится в моем приложении, и они нажимают на кнопку «домой» и переходят в несколько других приложений, а затем возвращаются, то активность будет воссоздана, и getActivity будет иметь значение null, когда я вызываю его мой фрагмент.getActivity null во фрагменте, когда приложение возобновляет

Решение, которое я нашел, состояло в том, чтобы создать статическую переменную и хранить getActivity в onCreateView.

Я чувствую, что это нехорошее решение. Есть ли другой способ, которым я могу заниматься этим?

Я попытался использовать нестационарную переменную и сохранить ее в OncreateView и onAttach, но getActivity будет null.

Вот ошибка, которую я получу, когда я использую getActivity, если я не сохраню ее как статическую переменную. Я использую его в своем AsyncTask для ProcessDialog в своем фрагменте.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference 

Спасибо.

+0

Какой метод переопределения вы вызываете, когда у вас есть getActivity() как null? –

ответ

0

Вы внедряете метод onActivityCreated? Вы должны использовать getActivity внутри этого метода.

Другим обходным решением будет использование onAttach для сохранения вашей активности.

@Override 
public void onAttach(Activity activity) { 
super.onAttach(activity); 
mActivity = activity; 
} 
+0

Спасибо, но я уже пробовал это. Он будет работать, только если переменная статична. Я чувствую, что использование статической переменной неверно. Но я сделаю это, пока не найду что-нибудь еще. – huey77

1

Если вы уверены, что onAttach(Activity activity) также имеет значение ноль, то я подозреваю, что у вас есть несколько экземпляров такого же фрагмента одновременно. Распечатайте экземпляр фрагмента в onResume и проверьте экземпляры.

Смежные вопросы