运行时出现java Android NullPointerException错误
我正在开发一个简单的摄像头应用程序,它基于安卓开发者教程,但在运行时遇到了一些问题
这是我的日志打印输出
现在,我已经在CameraPreview中的第30行跟踪了NullPointerException,您可能已经了解到了这一点,因此CameraPreview的代码如下所示。我可以用Java编写代码,并且知道空指针是指还没有创建但据我所知已经创建的东西
public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{
private SurfaceHolder mHolder;
private Camera mCamera;
private static final String TAG = "Preview";
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera){
super(context);
mCamera = camera;
//Install callback to get notifications from the app
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); //deprecated but required for Android Version 3.0 and under
}
public void surfaceCreated(SurfaceHolder holder) {
//Surface been created now need to tell app where to draw PREVIEW
try{
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
}
catch(IOException e){
Log.d(TAG, "Camera preview error: " + e.getMessage());
}
}
第30行是这里的代码片段-mCamera.setPreviewDisplay(holder);
从中我可以看出,在'global'变量private Camera mCamera
中有一个mCamera实例
有人有什么想法吗?对不起,这是一个很长的问题,我已经尽力了
谢谢, 丹
另外,我知道这个类还需要其他方法,这只是“问题片段”
# 1 楼答案
看起来
camera
正在以null形式传递给CameraPreview
确保你的舱单上有这些信息:
还有,你的
getCameraInstance()
方法是什么# 2 楼答案
在哪里创建
CameraPreview
看起来像
new CameraPreview(context, null)
你必须确保
CameraPreview
没有null
摄像头# 3 楼答案
开始活动时,使用
Camera android.hardware.Camera.open()
初始化相机# 4 楼答案
mCamera=摄像机
在这一行,你的“相机”对象可能是空的。。。。所以先检查一下。。。 就像
如果(摄像头==null){
日志。e(“摄像头”,“我的摄像头为空…”)
}
试试这个。。。。通过这种方式,您可以找到空指针出现的确切位置