我已经将最新版本的android Sugar ORM库导入到eclipse中,并从我的项目中引用了它.我已经添加了以下元标记:
<meta-data
android:name="DATABASE"
android:value="venn_app.db" />
<meta-data
android:name="VERSION"
android:value="7" />
<meta-data
android:name="QUERY_LOG"
android:value="true" />
Run Code Online (Sandbox Code Playgroud)
这是我的POJO对象:
public class Event extends SugarRecord<Event> {
int id;
LatLng latLng = new LatLng(0,0);
String name;
Long startTime = new Long(0);
boolean isSelected = false;
boolean isCheckedIn = false;
public Event(){ }
public Event(int id, String name, LatLng latLng){
startTime = System.currentTimeMillis(); // divide by 1000 to get seconds
this.id = id;
this.latLng = latLng;
this.name = name;
isSelected = false;
isCheckedIn = false;
} …Run Code Online (Sandbox Code Playgroud) 我目前的AndroidManifest包含Sugar ORM声明如下
<application
android:name="com.orm.SugarApp"
Run Code Online (Sandbox Code Playgroud)
如他们在http://satyan.github.io/sugar/getting-started.html上的文档中所述.它包含在jar库中.
现在我需要为全局变量添加声明,如此处所示的 需要添加的Android全局变量
application android:name="MyApplication" android:icon="@drawable/icon" android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)
到现有的申请部分.但这意味着两个应用程序部分或两个"android:name",这是完全错误的.如何实现这两个应用程序部分的场景
我试图为我的android项目设置测试环境.基本的Robolectric设置完成.我使用了这个很好的教程.如果我在Manifest.xml中注释掉SugarORM,那么所有测试都可以.但如果我想与SugarORM一起使用,我总是会遇到这个错误:
来自com.orm.SugarDb.createDatabase的com.orm.SugarDb.getDomainClasses(SugarDb.java:37)的dalvik.system.DexFile $ DFEnum.hasMoreElements(DexFile.java:239)中的java.lang.NullPointerException(SugarDb.java: 104)位于android.database.sqlite.SQLiteOpenper.getWritableDatabase(SQLiteOpenHelper.java:164)的android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)的com.orm.SugarDb.onCreate(SugarDb.java:100) )com.orm.Database.getDB(Database.java:18)at com.orm.SugarApp.onTerminate(SugarApp.java:16)atg.robolectric.internal.ParallelUniverse.tearDownApplication(ParallelUniverse.java:133)at org .robolectric.RobolectricTestRunner $ 2.evaluate(RobolectricTestRunner.java:246)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)org.junit.runners.在org.junit的org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)的org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)中的ParentRunner $ 1.schedule(ParentRunner.java:71) .runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)org.robolectric.RobolectricTestRunner $ 1.evaluate(RobolectricTestRunner.java:158)org.junit.runners.ParentRunner.run(ParentRunner.java:363)at org. junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)57)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner) .java:288)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)at org.robolectric.RobolectricTestRunner $ 1.evaluate (RobolectricTestRunner.java:158)org.junit.runners.ParentRunner.run(ParentRunner.java:363)位于com.intellij.rt.execution的org.junit.runner.JUnitCore.run(JUnitCore.java:137). application.AppMain.main(AppMain.java:134)57)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:290)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner) .java:288)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)at org.robolectric.RobolectricTestRunner $ 1.evaluate (RobolectricTestRunner.java:158)org.junit.runners.ParentRunner.run(ParentRunner.java:363)位于com.intellij.rt.execution的org.junit.runner.JUnitCore.run(JUnitCore.java:137). application.AppMain.main(AppMain.java:134)ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)位于org.junit的org.robolectric.RobolectricTestRunner $ 1.evaluate(RobolectricTestRunner.java:158). runners.ParentRunner.run(ParentRunner.java:363)atg.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)ParentRunner.access $ 000(ParentRunner.java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268)位于org.junit的org.robolectric.RobolectricTestRunner $ 1.evaluate(RobolectricTestRunner.java:158). runners.ParentRunner.run(ParentRunner.java:363)atg.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
每个人都有同样的问题吗?
编辑
也许是这样,因为Robolectric在测试后关机并且还没有完成.我的TestClass
@RunWith(RobolectricTestRunner.class)
@Config(manifest="./src/main/AndroidManifest.xml",emulateSdk=18)
public class …Run Code Online (Sandbox Code Playgroud) 我在我的Android 5.1应用程序中使用版本1.3.1中的Sugar ORM.
今天,我注意到在安装我的应用程序后,Sugar ORM阻止UI线程初始化大约2.4秒.
有没有办法在后台线程中完成这些工作以改善UX?
04-07 20:14:42.179 10407-10407/com.sample.app I/Sugar? on create
04-07 20:14:44.354 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.358 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.358 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.360 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.362 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.365 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.366 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.368 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.370 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.372 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.373 10407-10407/com.sample.app I/Sugar? domain class
04-07 20:14:44.375 …Run Code Online (Sandbox Code Playgroud) 我正在尝试将华丽的Kotlin和SugarORM结合使用以进行Android开发,并让我的模型设置如下:
import com.orm.SugarRecord
public class Contact : SugarRecord<Contact>() {
var name : String = ""
var phoneNumber : String = ""
var info : String? = null
}
Run Code Online (Sandbox Code Playgroud)
当然我也改变了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>
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用里面的模型MainActivity.kt:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
val contacts = Contact.listAll(javaClass(Contact))
// or val …Run Code Online (Sandbox Code Playgroud) 我是第一次使用SugarORM,我有一个简单的问题.如何将一个实体设置为主键?例如,我需要这样的东西:
public class Student{
@PrimaryKey
private String studentId;
private String name;
}
Run Code Online (Sandbox Code Playgroud)
可能吗?谢谢.
我正在试图找出如何使用sugarORM(1.4版本,使用Gradle导入).
我有一个带public String name字段的简单对象,等等.
我使用该名称构造该简单对象并将其保存为此(使用TEST_TYPE随机字符串):
CustomObject type = new CustomObject(TEST_TYPE);
long l=type.save();
Toast.makeText(this, "Type ajouté ! id="+l, Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
我的日志现在显示id = 14,所以我认为写入是正常的.
但是当我想阅读时,没有任何意义:
CustomObject.count(CustomObject.class) 返回14CustomObject.findById(CustomObject.class, 2) 返回nullCustomObject.first(CustomObject.class) 返回nullCustomObject.find(LifeEventType.class, "NAME = ?", new String[]{TEST_TYPE}) 返回null我不知道它是否相关,但是我在警告日志中得到了这个例外:(
java.lang.NoSuchMethodException: <init> at com.orm.SugarRecord.find(SugarRecord.java:196)对于像我这样的菜鸟而言代码太高级了......)
我究竟做错了什么 ?
我正在将SugarORM用于我的Android应用程序。在我的项目中,我有几个表,我想知道是否有办法将它们连接到另一个具有多个表中的列的类对象中?
如果是,那么示例将非常有帮助。
我下载了SugarORM源代码以将其用作库模块(因此我可以覆盖应用程序的"attachBaseContext"方法.
我已经看到了SugarORM和multidex的问题,问题是我无法弄清楚如何将MultiDex库引用到我的新SugarORM库模块中.有人可以帮我解决这个问题吗?
我想用糖orm在我的数据库中保存图像.我怎样才能做到这一点?
我有下一个代码来尝试保存它:
实体:
import android.graphics.drawable.Drawable;
import android.media.Image;
import com.orm.SugarRecord;
import com.orm.dsl.NotNull;
import com.orm.dsl.Unique;
public class Exercise extends SugarRecord {
@Unique
protected String name;
@NotNull
protected String description;
protected Drawable image;
protected String video;
public Exercise() {
}
public Exercise(String name, String description, Drawable image, String video) {
this.name = name;
this.description = description;
this.image = image;
this.video = video;
}
/**
* @return String name
*/
public String getName() {
return name;
}
/**
* @param name
*/
public void …Run Code Online (Sandbox Code Playgroud) android ×10
sugarorm ×10
kotlin ×1
multi-table ×1
orm ×1
performance ×1
primary-key ×1
robolectric ×1
sqlite ×1
testing ×1