我是Android开发的初学者,我正在尝试制作相机应用程序。 我把所有的代码都放在了pastebin中;这是链接:
Main.java: here
CameraControl.java:here
CameraPreview.java:here
代码有点乱,但我希望你能读懂它。
以下是来自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)
答案 0 :(得分:1)
在您的Main中,您有一个字段:
private CameraControl cc;
从未初始化;因此,当您尝试在回调中使用它时,它为null。也就是说,试着打电话
cc.safeCameraOpen()
当cc
为null时会导致NullPointerException。
答案 1 :(得分: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。