我的应用程序有浏览寻呼机和片段。
在我的父母片段中,我创建了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)
。因为我需要保留国家。我该如何解决?
答案 0 :(得分:1)
您只需使用此
检查是否已附加Fragmentif (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
}