Ich habe ein Problem mit startActivityForResult/onActivityResult wo Daten Null zurückgibt. Ich benutze startActivityForResult (Kamera) und verwalten, um das Bild auf dem Gerät zu speichern.Android startActivityForResult gibt null zu onActivityResult zurück, wenn die Kamera verwendet
Dies ist das Stück in der Tätigkeit, die die Kamera
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.upload_new_tire);
setUpWings();
imageButton.setOnClickListener(new MyCamera(this));
}
protected void onActivityResult(int requestCode,int resultCode, Intent data){
Log.i("request, result Code", String.valueOf(requestCode) + " and " + String.valueOf(resultCode));
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data != null){
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap)extras.get("data");
imageButton.setImageBitmap(imageBitmap);
}
}
Dies ist, wo ich startActivityForResult nennen und das Bild einer Datei speichern Dies ist meine onActivityResult Funktion aufruft.
Uri photoURI = FileProvider.getUriForFile(mContext,
"autosoftpro.reusedtire.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
mContext.startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
Dies ist die Fehlermeldung, weil 'Intent data' null ist. Ich habe versucht, andere Beiträge zu sehen, die ähnlich sind, aber es nicht geschafft haben, den Grund dafür herauszufinden.
java.lang.RuntimeException: Failure delivering result
ResultInfo{who=null, request=1, result=-1, data=null} to activity {autosoftpro.reusedtire/autosoftpro.reusedtire.UploadTireActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
Sie verwenden unterschiedliche Anforderungscodes. 'REQUEST_IMAGE_CAPTURE' in Ihrem onActivityResult, aber' REQUEST_TAKE_PHOTO' in Ihrer Anfrage. Das heißt, Sie sollten zuerst versuchen, 'if (resultCode! = RESULT_CANCELED)' 'hinzuzufügen, um sicherzustellen, dass Sie eine gültige Antwort haben, mit der Sie arbeiten können. Sie brauchen Ihren Super-Anruf auch nicht, es sei denn, Sie haben einen ausdrücklichen Grund dafür. – zgc7009
Vielen Dank für Ihre Antwort. Sie sind tatsächlich beide gleich 1, und es ging in die Bedingungsschleife, wenn ich die Bedingungsdaten nicht einschließe! = Null –
Ihre Daten sind also tatsächlich null (ist in dem von Ihnen geposteten Fehler offensichtlich). Die einzige Zeit, die passieren sollte, ist, wenn Sie Ihre Anfrage abbrechen (die mit der Prüfung "if (resultCode! = RESULT_CANCELED)" abgefangen werden kann. – zgc7009