我在某些代碼上有NPE
,我不知道爲什麼。我相信這是件小事,但我似乎無法找到它 - 這就是我正在嘗試做的事。獲取空指針,我不知道爲什麼
捕捉照片,檢測臉部,如果沒有臉部,則在ImageView
上顯示圖像,並允許用戶選擇拍攝其他照片。
這裏是我的代碼:
if (facesFound < 1) {
ImageView imageView = (ImageView) findViewById(R.id.false_view);
TextView textView = (TextView) findViewById(R.id.badPicText);
textView.setText(R.string.noFaceFive);
imageView.setImageBitmap(bitmap565);
}
這是我的方法中:
private void detectFaces() {
//Here is the method I use to snap a photo then detect for faces:
}
public void processCameraImage(Intent intent) {
setContentView(R.layout.detectlayout); // detectlayout
ImageView imageView = (ImageView) findViewById(R.id.image_view); // image_view
cameraBitmap = (Bitmap) intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
detectFaces();
}
奇怪的是,當檢測到面部時,它工作得很好 - 並將它們放在圖像一個ImageView
說它的確,像這樣
if (facesFound > 0){
//face detection code
//write the bmp to an output stream, compress
ImageView imageView = (ImageView) findViewById(R.id.image_view);
TextView textView = (TextView) findViewById(R.id.textViewGoodPic);
textView.setText(R.string.yesFace);
imageView.setImageBitmap(bitmap565);
}
任何人都知道,我可能會去錯了嗎?
謝謝!
編輯:應用程序崩潰時,應用程序檢測到沒有面孔,我嘗試寫入照片和一些文本到ImageView
。
編輯:這裏是logcat
:
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): FATAL EXCEPTION: main
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=100, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.project.dtf/com.project.dtf.DTF}: java.lang.NullPointerException
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread.deliverResults(ActivityThread.java:3589)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3631)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread.access$3000(ActivityThread.java:129)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2137)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.os.Looper.loop(Looper.java:143)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread.main(ActivityThread.java:4701)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at java.lang.reflect.Method.invokeNative(Native Method)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at java.lang.reflect.Method.invoke(Method.java:521)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at dalvik.system.NativeStart.main(Native Method)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): Caused by: java.lang.NullPointerException
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at com.project.dtf.DTF.detectFaces(DTF.java:130)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at com.project.dtf.DTF.processCameraImage(DTF.java:90)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at com.project.dtf.DTF.onActivityResult(DTF.java:57)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
11-18 19:42:39.825: ERROR/AndroidRuntime(4244): at android.app.ActivityThread.deliverResults(ActivityThread.java:3585)
編輯:問題仍然沒有解決=/
這裏有兩個電話:
if (facesFound < 1) {
setContentView(R.layout.detectfalse);
ImageView imageView = (ImageView) findViewById(R.id.false_view);
TextView textView = (TextView) findViewById(R.id.badPicText);
textView.setText(R.string.noFace);
imageView.setImageBitmap(bitmap565);
}
和
if (facesFound > 0) {
showToast(this, "Face Detected!");
//do stuff
setContentView(R.layout.detectlayout);
ImageView imageView = (ImageView) findViewById(R.id.image_view);
TextView textView = (TextView) findViewById(R.id.textViewGoodPic);
textView.setText(R.string.yesFace);
imageView.setImageBitmap(bitmap565);
}
請記住,我沒有在這個方法setContentView
:
public void processCameraImage(Intent intent) {
setContentView(R.layout.detectlayout); // detectlayout
ImageView imageView = (ImageView) findViewById(R.id.image_view); // image_view
cameraBitmap = (Bitmap) intent.getExtras().get("data");
imageView.setImageBitmap(cameraBitmap);
detectFaces();
}
的facedetect
類甚至被稱爲前,就是我要去的地方錯了嗎?
NPE的堆棧跟蹤說什麼代碼行是從哪裏來的? – 2010-11-19 00:34:17
這些行:ImageView imageView =(ImageView)findViewById(R.id.false_view); TextView textView =(TextView)findViewById(R.id.badPicText); textView.setText(R.string.noFaceFive); imageView.setImageBitmap(bitmap565); – Sapp 2010-11-19 00:35:07
您確定自己製作了setContentView,並且您將其設置爲的佈局包含R.id.false_view和R.id.badPicText?位圖bitmap565是否設置?你能爲我們提供異常的確切堆棧跟蹤嗎?請複製粘貼整個異常。並告訴我們它所指的確切路線。謝謝:) – 2010-11-19 00:39:23