根据谷歌关于启动活动以获取结果的文档:
尽管在所有API级别上Activity类中提供了底层的startActivityForResult()和onActivityResult() API,但强烈建议使用AndroidX Activity 1.2.0-alpha02和Fragment 1.3.0-alpha02引入的Activity Result APIs。
我想让我的用户从我的应用内拍照并将照片数据返回到我的应用。我原本打算使用旧的startActivityForResult()方法,但这种新方法似乎可以解决很多问题,并且更加可靠,所以我想试试。我应该能够调用
但是我遇到了这个问题:
尽管在所有API级别上Activity类中提供了底层的startActivityForResult()和onActivityResult() API,但强烈建议使用AndroidX Activity 1.2.0-alpha02和Fragment 1.3.0-alpha02引入的Activity Result APIs。
我想让我的用户从我的应用内拍照并将照片数据返回到我的应用。我原本打算使用旧的startActivityForResult()方法,但这种新方法似乎可以解决很多问题,并且更加可靠,所以我想试试。我应该能够调用
registerForActivityResult()
并传递一个名为ActivityResultsContracts.TakePicture的内置合同来拍照:this.registerForActivityResult(new ActivityResultContracts.TakePicture(), ...);
但是我遇到了这个问题:
错误:找不到 ActivityResultContracts 包
我已经将以下内容添加到我的 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
,但我看到的是这个:
我正在使用gradle 3.5.3,如果这很重要的话。(每当我尝试升级到最新的gradle时,我的项目就会变得疯狂,所以我一直使用能正常工作的版本。)
androidx
,只是更新了版本号,甚至没有注意到它是特定于appcompat而不是activity包的。再次感谢! - Kenny WylandregisterForActivityResult
),即使我在Gradle文件中列出了这两个依赖项。然而,它们是alpha版本02,根据Google文档。当我按照CommonsWare的建议将它们更改为04时,问题得到了解决。非常感谢! - Francoimplementation "androidx.fragment:fragment-ktx:1.3.0-rc01" implementation "androidx.fragment:fragment:1.3.0-rc01" implementation 'androidx.activity:activity:1.2.0-rc01' implementation 'androidx.activity:activity-ktx:1.2.0-rc01'
- android developer¯\_(ツ)_/¯
- CommonsWare