У меня возникла проблема с startActivityForResult/onActivityResult, где данные возвращают значение null. Я использую startActivityForResult (камера) и могу сохранить изображение в устройстве.Android startActivityForResult возвращает null в onActivityResult при использовании камеры
Это часть в деятельности, которая вызывает камеру
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.upload_new_tire);
setUpWings();
imageButton.setOnClickListener(new MyCamera(this));
}
Это моя onActivityResult функция
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);
}
}
Это где я называю startActivityForResult и сохранить изображение в файл.
Uri photoURI = FileProvider.getUriForFile(mContext,
"autosoftpro.reusedtire.fileprovider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
mContext.startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
Это сообщение об ошибке, это происходит потому, что «Intent data» имеет значение NULL. Я попытался взглянуть на другие сообщения, похожие, но не сумел выяснить причину.
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
Вы используете разные коды запросов. 'REQUEST_IMAGE_CAPTURE' в вашем onActivityResult, но' REQUEST_TAKE_PHOTO' в вашем запросе. При этом вам следует попытаться добавить 'if (resultCode! = RESULT_CANCELED)' сначала, чтобы убедиться, что у вас есть действительный ответ для работы. Вам также не нужен ваш супер-вызов, если у вас нет явной причины. – zgc7009
Благодарим за отзыв. Они фактически равны 1, и они вошли в цикл условий, если я не включаю данные условия! = Null –
Таким образом, ваши данные на самом деле являются нулевыми (это видно из выведенной ошибки). Единственный раз, когда это произойдет, - если вы отмените свой запрос (который можно поймать с помощью проверки 'if (resultCode! = RESULT_CANCELED)'. – zgc7009