Ken*_*and 17 android android-appcompat android-gradle-plugin androidx
虽然底层的 startActivityForResult() 和 onActivityResult() API 在所有 API 级别的 Activity 类上都可用,但强烈建议使用 AndroidX Activity 1.2.0-alpha02 和 Fragment 1.3.0-alpha02 中引入的 Activity Result API。
我想让我的用户从我的应用程序中拍摄照片并将该照片数据返回到我的应用程序。我打算使用旧的 startActivityForResult() 但是这个新方法看起来可以解决很多问题并且更可靠,所以我想试一试。我应该能够调用registerForActivityResult()并传递一个内置的合约来拍摄一张名为ActivityResultsContracts.TakePicture的照片:
this.registerForActivityResult(new ActivityResultContracts.TakePicture(), ...);
Run Code Online (Sandbox Code Playgroud)
但我得到: 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'
Run Code Online (Sandbox Code Playgroud)
我尝试了alpha02和beta01并且它们似乎都没有文档中提到的类。
当我尝试在我的 java 文件顶部手动导入类时,AndroidStudio 也不认为该包存在。应该是androidx.activity.result.contract.ActivityResultContracts.TakePicture,但这是我看到的:
如果这很重要,我正在使用 gradle 3.5.3。(每当我尝试升级到最新的 gradle 时,我的项目就会变得疯狂,所以我一直使用有效的版本。)
Com*_*are 36
从引用的文档中:
强烈建议使用 AndroidX Activity 1.2.0-alpha02 和 Fragment 1.3.0-alpha02 中引入的 Activity Result API。
这些都不在您的依赖项中,至少是您问题中的部分。你一直在操纵appcompat,不是activity或fragment。
添加以下一项或两项:
implementation "androidx.activity:activity:1.2.0"
implementation "androidx.fragment:fragment:1.3.0"
Run Code Online (Sandbox Code Playgroud)
(或任何更高版本)
tro*_*man 22
我也遇到了同样的问题。当我将 androidx.appcompat 从版本 1.2.0 升级到 1.3.1 时,问题就消失了。无需添加 androidx.activity 或 androidx.fragment 依赖项。
dependencies {
implementation 'androidx.appcompat:appcompat:1.3.1'
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7786 次 |
| 最近记录: |