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 }
作品。
- 如何写while循环与在kotlin中的responseInputStream.read – (while((i = responseInputStream.read(byteContainer))
- Android Kotlin – 每分钟发送通知
- Firebase Android – 在Kotlin中使用电子邮件和密码创建用户
- 为什么智能铸造错误发生在kotlin?
- Java to Kotlin转换器和可空方法参数
- 应用程序图标不显示在Android版本大于4.4.2的设备上
- Retrofit2 + Kotlin中的SimpleXML:MethodException:注释必须标记一个set或get方法
- 如何在Java中轻松使用Kotlin渠道生产者?
- Android Kotlin创建类实现Parcelable在writeToParcel方法的“覆盖”中给出一个错误