自定义视图作为Android中的单例

时间:2017-01-17 18:36:29

标签: java android view singleton android-custom-view

我有一个从RelativeLayout扩展的自定义视图。

我想尝试将此自定义视图设为单身。

我有这段代码:

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

并试图从片段中使用它:

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

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

我从这段代码中得到一个NullPointException。 当我稍微改变一下时,还会出现InflateException。

如何从自定义视图访问静态实例并将其分配给变量?因为这样做:

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

是不允许的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

私有静态CameraView sCameraView;是一个静态参考,但它是不可取的。 Read this

您应该避免将UI元素声明为静态。希望这能解决你的问题。