J'ai un NPE
sur un code et je n'ai aucune idée pourquoi. Je suis sûr que c'est quelque chose de trivial, mais je n'arrive pas à le trouver - voici ce que j'essaie de faire.Obtenir Null Pointer et je ne sais pas pourquoi
Prendre une photo, détecter des visages, s'il n'y a pas de visages, puis afficher l'image sur un ImageView
et permettre à l'utilisateur de prendre une autre photo.
Voici mon code:
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);
}
c'est dans ma méthode:
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();
}
La chose étrange est, lorsqu'un visage est détecté, il fonctionne très bien - et les met image un ImageView
disant qu'il a fait, comme si
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);
}
Quelqu'un sait où je pourrais aller mal?
Merci!
EDIT: l'application se bloque lorsque l'application détecte aucun visage et je tente d'écrire la photo et du texte à l'ImageView
.
EDIT: Voici le 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)
EDIT: Vous avez encore des problèmes =/
Voici les deux appels:
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);
}
ET
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);
}
Gardez à l'esprit, je l'ai fait setContentView
dans cette méthode:
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();
}
avant la classe facedetect
est même appelée, est que là où je me trompe?
De quelle ligne de code la trace de pile de NPE dit-elle qu'elle provient? –
ces lignes: ImageView imageView = (ImageView) findViewById (R.id.false_view); TextView textView = (TextView) findViewById (R.id.badPicText); textView.setText (R.string.noFaceFive); imageView.setImageBitmap (bitmap565); – Sapp
êtes-vous sûr que vous avez créé setContentView et que la disposition que vous avez définie contient R.id.false_view et R.id.badPicText? Le bitmap bitmap565 est-il défini? pouvez-vous nous fournir la piletrace exacte de l'exception? s'il vous plaît copiez coller l'exception entière. Et dites-nous la ligne exacte à laquelle il se réfère. Merci :) –