Пакет AndroidX ActivityResultContracts не найден / класс не найден - PullRequest
9 голосов
/ 05 мая 2020

Согласно этой документации от Google о запуске активности для получения результата :

Хотя базовые API startActivityForResult () и onActivityResult () доступны в классе Activity на всех уровнях API настоятельно рекомендуется использовать API результатов деятельности, представленные в AndroidX Activity 1.2.0-alpha02 и Fragment 1.3.0-alpha02.

Я хочу, чтобы мои пользователи могли делать фотографии из моего приложения и вернуть данные фотографии в мое приложение. Я собирался использовать старый startActivityForResult (), но этот новый метод, похоже, решит множество проблем и будет более надежным, поэтому я хотел попробовать. Я должен иметь возможность позвонить по номеру registerForActivityResult() и передать ему встроенный контракт на создание фотографии под названием ActivityResultsContracts.TakePicture :

this.registerForActivityResult(new ActivityResultContracts.TakePicture(), ...);

Но я получаю: error: package ActivityResultContracts does not exist

Я добавил это в свой app / build.gradle:

// original include
//implementation 'androidx.appcompat:appcompat:1.1.0'

// suggestion from Google documentation
//implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'

// AndroidStudio suggested a newer version was available
implementation 'androidx.appcompat:appcompat:1.2.0-beta01'

Я пробовал alpha02 и beta01, и ни один из них, похоже, не имеет указанных классов в документации.

Когда я пытаюсь вручную импортировать класс в начало моего файла java, AndroidStudio также не думает, что пакет существует. Это должно быть androidx.activity.result.contract.ActivityResultContracts.TakePicture, но вот что я вижу:

screenshot of Android Studio auto-complete package list in import statement

Я использую gradle 3.5.3, если это вообще имеет значение. (Каждый раз, когда я пытаюсь перейти на последнюю версию Gradle, мой проект сходит с ума, поэтому я просто остановился на той версии, которая работает.)

1 Ответ

8 голосов
/ 05 мая 2020

Из процитированной документации:

настоятельно рекомендуется использовать API результатов деятельности, представленные в AndroidX Activity 1.2.0-alpha02 и Fragment 1.3.0-alpha02.

Ни того, ни другого нет в ваших зависимостях, по крайней мере, часть из вашего вопроса. Вы манипулировали appcompat, а не activity или fragment.

Добавьте одно или оба из:

implementation "androidx.activity:activity:1.2.0-alpha04"
implementation "androidx.fragment:fragment:1.3.0-alpha04"

(здесь цитируются текущие альфа-версии)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...