Absturz Beim Drücken der Zurück-Taste auf Android-Kamera-Vorsatz
ich habe ein problem mit meine Kamera in die Android-Anwendung
ich habe ein Formular zum speichern von Daten, gibt es eine Schaltfläche, um Bild mit Kamera und das aufgenommene Bild der Kamera wird auf Bildansicht in meine form.
es gibt kein problem, auf das aufrufen des Kamera-Vorsatz und platzieren des Bildes in form
mein problem ist :
in der Kamera-Anwendung,
wenn ich drücken Sie die zurück-Taste (zurück zum Formular) meine Anwendung abgestürzt.
warum?
dies ist der code meiner Schaltfläche, rufen Sie die Kamera
btn_takepic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
}
});
dies ist mein onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
final EditText et_foto = (EditText) findViewById(R.id.et_foto);
if(requestCode == CAMERA_PIC_REQUEST) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image = (ImageView) findViewById(R.id.imv_foto);
image.setImageBitmap(thumbnail);
//toastkeun(data.getExtras().get("data").toString());
}
super.onActivityResult(requestCode, resultCode, data);
}
ich bin das testen auf einem echten Gerät
dies ist mein logCat
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): FATAL EXCEPTION: main
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=0, data=null} to activity {com.ngimagrid.nigmago/com.ngimagrid.nigmago.FormAsetTambah}: java.lang.NullPointerException
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.access$2800(ActivityThread.java:125)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.os.Handler.dispatchMessage(Handler.java:99)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.os.Looper.loop(Looper.java:123)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at java.lang.reflect.Method.invokeNative(Native Method)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at java.lang.reflect.Method.invoke(Method.java:521)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at dalvik.system.NativeStart.main(Native Method)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): Caused by: java.lang.NullPointerException
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.ngimagrid.nigmago.FormAsetTambah.onActivityResult(FormAsetTambah.java:246)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): ... 11 more
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): FATAL EXCEPTION: main
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=0, data=null} to activity {com.ngimagrid.nigmago/com.ngimagrid.nigmago.FormAsetTambah}: java.lang.NullPointerException
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.access$2800(ActivityThread.java:125)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.os.Handler.dispatchMessage(Handler.java:99)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.os.Looper.loop(Looper.java:123)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at java.lang.reflect.Method.invokeNative(Native Method)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at java.lang.reflect.Method.invoke(Method.java:521)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at dalvik.system.NativeStart.main(Native Method)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): Caused by: java.lang.NullPointerException
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at com.ngimagrid.nigmago.FormAsetTambah.onActivityResult(FormAsetTambah.java:246)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): ... 11 more
aus dieser Linie, ich denke, das ist das problem...
07-08 16:05:26.187: ERROR/AndroidRuntime(12116): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=0, data=null} to activity {com.ngimagrid.nigmago/com.ngimagrid.nigmago.FormAsetTambah}: java.lang.NullPointerException
es gibt kein Ergebnis zurückgegeben, richtig?
wie um das zu beheben?
Dank
cmiiw
- Daten.getExtras().get("data"); Diese Zeile hat einige Probleme, die auf verschiedenen Geräten. code.google.com/p/android/issues/detail?id=1480 Für einige Geräte, die Daten nicht zurückgegeben mit dem bundle. Ich weiß nicht genau erinnern, welche Geräte aber. Aber, auch wenn Sie ein Bitmap, das ist sehr niedriger Auflösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass diese von der app. Sie können versuchen, umgeben Sie die ganze onActivity Ergebnis-code in einem try/catch-block. ich denke, was Sie erleben, ist eine Kamera-bug auf einigen Handys. versuchen Sie auch, um zu versuchen, um verschiedene Kombinationen von extras, die Sie senden, auf startActivityForResult Absicht.
Auch immer überprüfen Sie das Resultat-code, bevor Sie etwas tun. Sie wollen sich nicht um den gleichen code, wenn das Ergebnis ist abgebrochen (- Aktivität.RESULT_CANCELED) oder ok (- Aktivität.RESULT_OK )
außerdem gibt es einen bug, wo das Ergebnis kommt nicht in die EXTRA_OUTPUT (ich glaube es war unter diesem Namen), sondern es kommt als eine Uri, die in Ihrer Absicht.getData(). extra-Ausgabe ist Sie einen Pfad, wo die Datei zu speichern und die uri, die Rendite ist in der Regel das Bild, gespeichert in der Standard-Kamera-Standort. sein ein bisschen Verschieden, wie Sie sehen werden.
Sind Sie nicht mit flags Geldautomaten Sie sollten aber, wenn Sie möchten, das Bild als Ergebnis. Suche stack für einige Beispiel-code für die extras.
Die NullPointerException verursacht, indem Sie Ihren code unter der Annahme, dass die Daten.getExtras().get("data") wird etwas zurückgeben. Dies ist eine völlig undokumentierte parameter und auf viele (die meisten) Geräte, wird null zurückgegeben.
Wenn, wie es scheint, Sie versuchen, erhalten Sie eine Miniaturansicht, können Sie versuchen, so etwas wie diese, die versucht, sowohl bekannte als auch (für mich jedenfalls) Möglichkeiten zum extrahieren einer Miniatur aus den Ergebnissen der Kamera-Vorsatz.
Übrigens ich denke es ist ein bug - Ihre onActivityResult sollten auch testen, die "resultCode" ist OK - wenn der Benutzer bricht aus der Kamera, ich glaube onActivityResult wird noch genannt werden.
Ich hoffe, das ist nützlich.
Kann man ja mit Griff zurück-Taste, während Sie auf der Galerie oder Kamera oder einem anderen von diesem Weg.
Ihre Unterhaltung über das youtube video kenne ich, ich hatte den gleichen Fehler.
Ich denke, das Problem kann mit einem einfachen trick