2016-11-17 109 views
0

因此,如果用戶是在我的應用程序,他們點擊家裏去其他幾個應用程序,然後再回來,那麼活動將被重建,並getActivity將是無效的,當我在它調用我的片段。getActivity空當應用程序恢復

我找到的解決方案是創建一個靜態變量並將getActivity存儲在onCreateView中。

我覺得這不是一個好的解決方案。有什麼其他方法可以解決這個問題嗎?

我試着在OncreateView和onAttach使用非靜態變量和存儲,但getActivity將是無效的。

以下是錯誤,如果我不將它保存爲一個靜態變量,我會當我使用getActivity。我在我的Fragment的ProcessDialog的AsyncTask中使用它。

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中打印片段實例並檢查實例。