gpt4 book ai didi

android - 在 Android 中使用 Scala 中的 Java 常量

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:01 29 4
gpt4 key购买 nike

我在 Android 上使用 Scala 进行开发时遇到了一个奇怪的问题。我正在使用 sbt android 插件,现在我正试图让内容提供者工作,但是......

我需要获取列数组,我正在按照此处的教程进行操作:http://developer.android.com/guide/topics/providers/content-providers.html

只是用 Scala 替换了 Java 的数组代码。它看起来像这样:

val projection = Array(
People.NAME,
People.NUMBER
)

但是,scala 编译器返回错误

[error] /home/exine/proj/hello-world/src/main/scala/Activity.scala:12: value NAME is not a member of object android.provider.Contacts.People
[error] People.NAME,
[error] ^
[error] one error found

实际上它这个对象的成员,它在接口(interface) android.provider.Contacts.PeopleColumns 中定义(由 People 实现)。我也尝试过直接从 PeopleColumns 获取它,但没有成功(同样的错误)。在 Scala 中从 Java 获取常量是否有些不同,或者我只是在某处犯了一个愚蠢的错误?

更新:

下一个问题。使用 ContactsContract.Contacts 时,错误保持不变,而在尝试另一种方法时,我无法直接访问 ContactsContract.ContactsColumns,因为它是 protected 接口(interface)。

[error] /home/exine/proj/hello-world/src/main/scala/Activity.scala:13: object ContactsColumns cannot be accessed in object android.provider.ContactsContract
[error] ContactsColumns.LOOKUP_KEY,
[error] ^
[error] one error found

最佳答案

根据引用文献,此上下文已弃用。新方法是 ContactsContract,您应该使用它。

无论如何,问题是这个常量是定义在interface PeopleColumns 上的static。静态继承是 Java 具有但 Scala 没有的东西,即使在 Java 中也不赞成。

尝试导入 PeopleColumns 并改用 PeopleColumns.NAME —— 或者,更好的是,使用新的、未弃用的处理方式。我不解释,因为我不了解 Android 开发。

关于android - 在 Android 中使用 Scala 中的 Java 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628872/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com