2016-10-03 80 views
-5

我有我的應用程序查看傳呼機和片段。 在我父母的父母片段中,我做了setRetainInstance(true)Android應用程序崩潰更改字體大小

我把我的應用程序放在後臺並更改字體大小。當我再次打開我的應用程序時,它崩潰。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference 
at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:667) 

我不能使用setRetainInstance(false)。因爲我需要保留國家。我如何解決它?

+4

看起來像WhereIsTheCode.java行中的錯誤666 – Selvin

+0

您需要編寫您的片段管理器代碼的某些部分。特別是發生錯誤的行 –

+0

它在內部文件中崩潰。原因是setRetainInstance(true)。如果我刪除它,它不會崩潰 –

回答

0

案例1:

使用setRetainInstance不保留在內存中您的視圖只是保持相同的實例基於你給你的片段標籤或標識的一種辛格爾頓。這很好,因爲當片段進入背景時,你的觀點被破壞而不是不必要的記憶。

選中此鏈接。 Reference Link

的情況下2:

時字體大小已經changed.but您arraylist.size越來越空。請檢查yourfile.java在行,如果ArrayList的= NULL每當666.please檢查條件您的錯誤是不產生!在你的代碼中使用arraylist.size()。

0

這是因爲你訪問一個空數組

您訪問時數組列表前添加以下代碼

if (!nArrayList.isEmpty() ||nArrayList != null) { 
    //access your arraylist 
     } 
1

你只需要檢查是否片段已經利用該

連接或不
if (isAdded()) { 
//do your stuff 
}