运行时Android NullPointerException错误

时间:2012-08-01 11:17:00

标签: java android xml

我正在开发一个基于Android开发人员教程的简单相机应用程序但我的运行时遇到了一些问题。

这是我的LogCat打印输出。

enter image description here

现在我已经将NullPointerException跟踪到CameraPreview的第30行,因为你可能已经想到了所以CameraPreview的代码如下所示。我可以用Java编写代码并知道NullPointer是什么时候还没有创建的东西,但据我所知,它已经存在。

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);

据我所知,“全局”变量private Camera mCamera中有一个mCamera实例。

有人有任何想法吗?抱歉,这是一个很长的问题,尽可能格式化。

谢谢, 丹

P.S。我知道这个课程还需要其他方法,这只是'问题片段'。

4 个答案:

答案 0 :(得分:1)

CameraPreview在哪里创建?

看起来像new CameraPreview(context, null)

您必须确保CameraPreview不是null - 相机。

答案 1 :(得分:1)

public CameraPreview(Context context, Camera camera){
    super(context);
    mCamera = camera;

看起来camera传递给CameraPreview为空。


确保在你的清单中有这些:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />  
<uses-feature android:name="android.hardware.camera.autofocus" /> 

另外,你的getCameraInstance()方法是什么?

答案 2 :(得分:0)

开始活动时,使用Camera android.hardware.Camera.open()初始化相机。

答案 3 :(得分:-1)

mCamera =相机。

在这一行你的'相机'对象可能为空....所以先检查一下...... 像

如果(相机== NULL){

Log.e(“相机”,“我的相机为空......”);

}

试试这个....这样你就可以找到nullPointer发生的确切位置......