2016-10-03 9 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のエラーのようです6637 – Selvin

+0

フラグメントマネージャのコードの一部をリースで書く必要があります。特にエラーが発生した行 –

+0

内部ファイルがクラッシュしています。理由はsetRetainInstance(true)です。削除するとクラッシュしません –

答えて

0

ケース1:

使用setRetainInstanceちょうどあなたがあなたのフラグメントに与えるタグやIDに基づいて、シングルトンの一種として同じインスタンスを保持するメモリであなたのビューを保持しません。あなたがフラグメントをバックグラウンドにすると、あなたのビューは破壊され、不要なメモリではないからです。

このリンクを確認してください。 Reference Link

ケース2:

フォントサイズがあればArrayListを= nullをいつでも状態を確認666.pleaseラインでyourfile.javaをチェックしなさいnullを取得し、あなたのarraylist.sizeをchanged.butたときにエラーが生成されていません!コードでarraylist.size()を使用してください。あなたは空の配列

はあなたのアクセス午前の配列リストの前にコードの下に

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

これらは、あなただけの断片が、この

を使用して取り付けるかいないされているかどうかを確認する必要があります
if (isAdded()) { 
//do your stuff 
} 
1

を追加してアクセスするので

関連する問題