2017-01-17 4 views
0

私はRelativeLayoutから拡張されたカスタムビューを持っています。Androidのシングルトンとしてのカスタム表示

このカスタムビューをシングルトンとして作成しようとしたかったのですが、

私はこのコードを持っている:

private static CameraView sCameraView; 
public static synchronized CameraView getInstance(Context context) { 
    if (sCameraView == null) { 
     sCameraView = new CameraView(context); 
    } 
    return sCameraView; 
} 

をとしての断片からこれを使用してみました:私はこのコードからNullPointExceptionを取得しています

private CameraView mCameraView = CameraView.getInstance(getActivity().getApplicationContext()); 

mCameraView = (CameraView) mView.findViewById(R.id.camera_preview); 

。 その後、私は少し物事を切り替えるときにInflateExceptionも発生します。

カスタムビューから静的インスタンスにアクセスして変数に割り当てる方法を教えてください。これを行うため:

CameraView.getInstance(getActivity().getApplicationContext()) = (CameraView) mView.findViewById(R.id.camera_preview); 

は許可されていません。

ご協力いただきますようお願い申し上げます。

+1

"このカスタムビューをシングルトンとして作ろうと思っていました" - メモリがリークして(シングルトンを危険にする)、ビューは他のアクティビティ(シングルトンを役に立たなくする)で動作しません。私はあなたが別の計画を考え出すことを強くお勧めします。それ以外の場合は、LogCatを使用して、クラッシュに関連するJavaスタックトレースを調べます。https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-thisスタックトレース、あなたの質問を編集して投稿してください。 – CommonsWare

+0

申し訳ありません、あなたの答え#CommonsWareに感謝します。私はシングルトンが良い選択ではないことを知っていましたが、私はアンドロイドでシングルトンのビューを持つことについて実験していました。 – JWL

答えて

0

private static CameraView sCameraView;静的な参照ですが、望ましくありません。 Read this

静的なUI要素の宣言は避けてください。これがあなたの問題を解決することを願っています。

関連する問題