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 }
作品。
- 更新searchView,同时删除查询android
- AAR / JAR不会使用Android Studio 3.0 Canary 7生成
- Android Studio 3.0 Preview重构Kotlin代码时缺少导入
- 尝试使用Android Studio生成Kotlin应用程序的问题
- 如何在服务端获取数据的同时识别在android中下载的数据量
- 通用Kotlin通配符为参数
- Kotlin中的房间持久性库实现(Gradle错误)
- Dagger2和Kotlin运行失败的原因是:app:compileDebugKotlinAfterJava
- 我怎样才能访问kotlin android中的strings.xml的值