我在Android上的Scala中開發了一個奇怪的問題。我正在使用sbt android插件,現在我正在嘗試讓內容提供商工作,但是...在Android中使用Scala中的Java常量
我需要獲取數組列,並且完全按照教程在這裏: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
而實際上它是這個對象的成員,它的接口定義android.provider.Contacts.PeopleColumns(這是由People實現的)。我試着直接從PeopleColumns中獲取它,但沒有取得任何成功(同樣的錯誤)。從Scala的Java中獲取常量有點不同,或者我在某個地方犯了一個愚蠢的錯誤?
更新:
下一個問題。當使用ContactsContract.Contacts時,錯誤保持不變,當嘗試另一種方法時,我無法直接訪問ContactsContract.ContactsColumns,因爲它是受保護的接口。
[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
現在,最好的解決方案是將所有查詢的代碼寫入java中的類,然後調用它。它涉及語言混合,增加複雜性,但這是我不喜歡的東西。 – exine