Android应用程序在更改字体大小时崩溃

时间:2016-10-03 11:02:55

标签: android android-fragments nullpointerexception

我的应用程序有浏览寻呼机和片段。 在我的父母片段中,我创建了setRetainInstance(true)

我将我的应用程序放在后台并更改字体大小。当我再次打开我的应用程序时,它会崩溃。

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)。因为我需要保留国家。我该如何解决?

3 个答案:

答案 0 :(得分:1)

您只需使用此

检查是否已附加Fragment
if (isAdded()) {
 //do your stuff
}

答案 1 :(得分:0)

案例1:

使用setRetainInstance不要将视图保留在内存中,只需将基于您为片段提供的标记或ID的Singleton保持相同的实例。这很好,因为当你的片段进入背景时你的视图被破坏而不是不必要的记忆。

检查此链接。 Reference Link

案例2:

当字体大小发生变化时,你的错误没有生成。但你的arraylist.size变为空。请在第666行检查yourfile.java。如果你的代码中使用了arraylist.size(),请检查arraylist!= null。

答案 2 :(得分:0)

这是因为你访问了一个空数组

在访问数组列表之前添加以下代码

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