Как разрешить сиротский случай?

Я использовал код 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);
}

Пожалуйста, опубликуйте также результаты logcat. Выявить ошибку будет проще.

okcomputer_kid 17.12.2018 13:49

Хотите поделиться с нами ошибкой?

Guy 17.12.2018 13:50

Что вы имеете в виду под "ошибкой в ​​case(2)" - это компилируется? Я даже нигде не вижу заявленного switch

PPartisan 17.12.2018 13:51

Пожалуйста, прочтите «Как создать минимальный воспроизводимый пример». Затем используйте ссылку редактировать, чтобы улучшить свой вопрос (не добавляйте дополнительную информацию через комментарии). В противном случае мы не сможем ответить на ваш вопрос и помочь вам.

GhostCat 17.12.2018 14:03

отступ должен указывать на то, что case 2 находится в неправильном блоке .... также трудно понять, что внутри переключателя вы снова проверяете значение (if (requestCode == CAMERA_REQUEST - здесь requestCode ДОЛЖЕН быть 1, иначе этот if не будет выполняться вообще)

user85421 17.12.2018 14:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
521
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас не может быть 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.

PPartisan 17.12.2018 13:58

и снимаем первое условие с if

user85421 17.12.2018 14:09

@PPartisan Я не уверен, что представляет собой int в этом случае. Очевидно, это enum от Activity, но OP проверяет if (resultCode == Activity.RESULT_OK) в обоих случаях.

Guy 17.12.2018 14:11

У меня есть решение, мне просто нужно удалить одну скобку из кода, и мой код работает правильно

Shayan Aslam 17.12.2018 15:18

Я фактически закрыл оператор switch после того, как один случай завершен, а другой случай находится за пределами переключателя switch (requestCode) {case (1): // Код для камеры if (requestCode == Activity.CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {Растровое фото = (Растровое изображение) data.getExtras (). Get ("данные"); ломать; теперь все работает нормально

Shayan Aslam 17.12.2018 15:20

Другие вопросы по теме