2013-08-30 89 views
-3

我是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) 
+2

請發佈'Exception'(例如logcat轉儲)。 – dst

+3

此外,請嘗試在此發佈相關代碼。 Pastebin很酷,所有,但不僅在某些網絡上被阻塞,而且在這裏更加明顯。 – Geobits

+0

增加了預期。 – user1365830

回答

1

在主,你有一個字段:

private CameraControl cc; 

這是從來沒有初始化;因此,當您嘗試在回調中使用它時,它爲空。也就是說,試圖調用

cc.safeCameraOpen() 

cc爲空時導致NullPointerException異常。

+0

如何初始化? – user1365830

+1

在你的'onCreate'方法中,你可以添加這樣一行:'cc = new CameraControl();' –

+1

''CameraControl'中會出現類似的問題,'mPreview'字段沒有被初始化。您可能想要在Java中初始化變量和字段時閱讀一下。 –

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(); //<<-------------------------------------- 
    } 
}); 

}

你從來沒有因此它是空,你會得到NPE爲cc任何價值。

相關問題