SugarORM + Kotlin:未解决的参考 "listAll"
SugarORM + Kotlin: Unresovled reference "listAll"
我正在尝试结合使用华丽的 Kotlin 和 SugarORM 进行 Android 开发,并像这样设置我的模型:
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
等方法相同……我是否忽略了什么?
在此先感谢您的帮助。
由于这些是静态方法,您需要在声明时调用它们 class SugarRecord
。您的代码应该是:
SugarRecord.listAll(Contact::class.java)
由于缺乏更好的解释,这似乎是一个 Kotlin 错误。似乎静态方法没有被继承。像这样创建一个助手 class:
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
}
有效。
我正在尝试结合使用华丽的 Kotlin 和 SugarORM 进行 Android 开发,并像这样设置我的模型:
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
等方法相同……我是否忽略了什么?
在此先感谢您的帮助。
由于这些是静态方法,您需要在声明时调用它们 class SugarRecord
。您的代码应该是:
SugarRecord.listAll(Contact::class.java)
由于缺乏更好的解释,这似乎是一个 Kotlin 错误。似乎静态方法没有被继承。像这样创建一个助手 class:
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
}
有效。