-3

我是 Android 开发的初学者,我正在尝试制作相机应用程序。我把所有的代码都放在了pastebin中;这里是链接:

Main.java:这里

CameraControl.java:这里

CameraPreview.java:这里

代码有点乱,但我希望你能看懂。

这是来自 logcat 的异常消息:

08-30 17:31:48.299: E/AndroidRuntime(2558): FATAL EXCEPTION: main
08-30 17:31:48.299: E/AndroidRuntime(2558): java.lang.NullPointerException
08-30 17:31:48.299: E/AndroidRuntime(2558):     at com.maccer.vidcamtest.Main$1.onClick(Main.java:25)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.view.View.performClick(View.java:2485)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.view.View$PerformClick.run(View.java:9080)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.os.Handler.handleCallback(Handler.java:587)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.os.Looper.loop(Looper.java:130)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at android.app.ActivityThread.main(ActivityThread.java:3687)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at java.lang.reflect.Method.invokeNative(Native Method)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at java.lang.reflect.Method.invoke(Method.java:507)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
08-30 17:31:48.299: E/AndroidRuntime(2558):     at dalvik.system.NativeStart.main(Native Method)
4

2 回答 2

1

在您的 Main 中,您有一个字段:

    private CameraControl cc;

从未初始化;因此,当您尝试在回调中使用它时它为空。也就是说,试图调用

cc.safeCameraOpen()

何时cc为 null 会导致 NullPointerException。

于 2013-08-30T14:36:04.810 回答
1
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final Button button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        cc.safeCameraOpen(); //<<--------------------------------------
    }
});

}

你从来没有设置任何值,cc所以它是空的,你得到 NPE。

于 2013-08-30T14:36:18.747 回答