SugarORM + Kotlin:Unresovled参考“listAll”

我正在尝试为Android开发组合使用华丽的Kotlin和SugarORM,并将我的模型设置为这样:

import com.orm.SugarRecord public class Contact : SugarRecord<Contact>() { var name : String = "" var phoneNumber : String = "" var info : String? = null } 

当然我也改变了AndroidManifest.xml

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" tools:replace="android:icon" android:name="com.orm.SugarApp"> <meta-data android:name="DATABASE" android:value="database.db" /> <meta-data android:name="VERSION" android:value="1" /> <meta-data android:name="QUERY_LOG" android:value="true" /> <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="/* same as package attribute on manifest element */" /> <activity>…</activity> </application> 

现在我试图在MainActivity.kt使用模型:

 override fun onCreateOptionsMenu(menu: Menu?): Boolean { val contacts = Contact.listAll(javaClass(Contact)) // or val contacts : List<Contact> = Contact.listAll(javaClass(Contact)) return true } 

但得到错误Unresolved reference: listAll ,这意味着静态方法调用失败,出于某种原因。 跟find方法一样…我忽略了什么吗?

在此先感谢您的帮助。

由于这些是静态方法,所以需要在声明类SugarRecord上调用它们。 你的代码应该是:

 SugarRecord.listAll(Contact::class.java) 

缺乏更好的解释,这似乎是一个Kotlin错误。 看起来静态方法不是继承的。 像这样创建一个辅助类:

 public class ModelHelper { public static List<Contact> getAllContacts() { return Contact.listAll(Contact.class); } } 

并从Kotlin代码中调用

 override fun onCreateOptionsMenu(menu: Menu?): Boolean { val contacts = ModelHelper.getAllContacts() return true } 

作品。