找不到AndroidX ActivityResultContracts包/找不到类

时间:2020-05-05 20:15:48

标签: android android-gradle-plugin android-appcompat androidx

根据this documentation from Google about launching an activity to get a result

底层的startActivityForResult()和onActivityResult() 在所有API级别的Activity类上都可以使用API​​, 强烈建议使用引入的活动结果API AndroidX活动1.2.0-alpha02和片段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'

我尝试了alpha02beta01,但它们似乎都没有文档中提到的类。

当我尝试在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 个答案:

答案 0 :(得分:15)

引用的文档中:

强烈建议使用AndroidX活动1.2.0-alpha02和片段1.3.0-alpha02中引入的活动结果API。

这些都不在您的依赖项中,至少不在您的问题中。您一直在操作appcompat,而不是activityfragment

添加以下一项或两项:

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

(此处引用了当前的Alpha版本)

相关问题