Я использовал код OnActivityResult, в котором я использовал оператор switch, но у меня возникла ошибка в case 2.
switch (requestCode) {
case (1):
//Code for camera
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
break;
case (2):
//Code for Gallery
if (resultCode == RESULT_OK) {
Uri photoUri = data.getData();
if (photoUri != null) {
try {
currentImage = MediaStore.Images.Media.getBitmap(
this.getContentResolver(), photoUri);
selectedImage.setImageBitmap(currentImage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
break;
}
//imageView.setImageBitmap(photo);
}
Хотите поделиться с нами ошибкой?
Что вы имеете в виду под "ошибкой в case(2)" - это компилируется? Я даже нигде не вижу заявленного switch
Пожалуйста, прочтите «Как создать минимальный воспроизводимый пример». Затем используйте ссылку редактировать, чтобы улучшить свой вопрос (не добавляйте дополнительную информацию через комментарии). В противном случае мы не сможем ответить на ваш вопрос и помочь вам.
отступ должен указывать на то, что case 2 находится в неправильном блоке .... также трудно понять, что внутри переключателя вы снова проверяете значение (if (requestCode == CAMERA_REQUEST - здесь requestCode ДОЛЖЕН быть 1, иначе этот if не будет выполняться вообще)




У вас не может быть case внутри, если
switch (requestCode) {
case (1):
//Code for camera
if (requestCode == Activity.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
}
break;
case (2):
if (resultCode == Activity.RESULT_OK) {
Uri photoUri = data.getData();
if (photoUri != null) {
try {
currentImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), photoUri);
selectedImage.setImageBitmap(currentImage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
break;
}
Можно также использовать case(CAMERA_REQUEST) для первого case.
и снимаем первое условие с if
@PPartisan Я не уверен, что представляет собой int в этом случае. Очевидно, это enum от Activity, но OP проверяет if (resultCode == Activity.RESULT_OK) в обоих случаях.
У меня есть решение, мне просто нужно удалить одну скобку из кода, и мой код работает правильно
Я фактически закрыл оператор switch после того, как один случай завершен, а другой случай находится за пределами переключателя switch (requestCode) {case (1): // Код для камеры if (requestCode == Activity.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {Растровое фото = (Растровое изображение) data.getExtras (). Get ("данные"); ломать; теперь все работает нормально
Пожалуйста, опубликуйте также результаты logcat. Выявить ошибку будет проще.