2013-07-19 55 views
0

我(拥有平庸的开发技能)实际上尝试将Sugar用作我的Android项目的数据库包装器。 因此,我沿着“入门指南”(http://satyan.github.io/sugar/getting-started.html),尽快做好准备。尝试执行Sugar数据库CRUD操作时出错

我创造了我的实体类,称为DataSet.java:

import com.orm.SugarRecord; 

public class DataSet extends SugarRecord{ 
    int someData; 
    double evenMoreData; 

    public DataSet(Context ctx){ 
     super(ctx); 
    } 

public DataSet(Context ctx, 
     int someData, 
     long evenMoreData) { 
    super(ctx); 
    this.someData = someData; 
    this.evenMoreData = evenMoreData; 
    } 
} 

我调用类的方式如下:

someGreatClass something; 
someMoreGreatCode somemore; 

DataSet dataSet = new DataSet(
      ctx,       // Here Eclipse throws the error 
      something.method(), 
      somemore.anothermethod()); 
DataSet.save(); 

当我尝试建立这一点,并推到我的设备时,Eclipse拒绝编译并抛出这个错误:

ctx cannot be resolved to a variable 

考虑的事实是,我重新对于Android开发来说,这个错误可能很明显,我希望得到一个小技巧来解决这个问题。

P.S:另外,我不完全得到开发者的声明中得到-开始-注:

Please retain one constructor with Context argument. (This constraint will be removed in subsequent release.) 

非常感谢您!

//编辑:的确从LocationDataSet编辑类名来的数据进行澄清设置

+0

您是否添加(或扩展)了SugarApplication? – IncrediApp

回答

0

首先,在获得启动的音符告诉你,你需要一个构造函数只有一个环境参数,你这样做这里,所以也没什么

public DataSet(Context ctx){ 
    super(ctx); 
} 

ctx cannot be resolved to a variable 

我想你没有一个变量称为CTX,我不知道你是否熟悉Android的背景? (基本上上下文是服务或活动),如果您在活动或服务中使用此代码,只需使用“this”关键字而不是ctx变量

您提供的代码并不真实显示你在做什么,但是你向我们展示了'DataSet'的代码,但是这个错误发生在一个LocationDataSet中?你打电话保存DataSet? 必须在对象上调用save方法,而不是类。

另外不要忘记,糖需要在清单

更新与示例中的特殊应用类:

你的数据集类(sugarrecord)应该是这样的,这是在你的代码确定据我可以看到

public class DataSet extends SugarRecord<DataSet>{ 

private String someData; 

public DataSet(Context c){ 
    super(c); 
} 

    public DataSet(Context c, String someData){ 
    super(c); 
    this.someData = someData; 
} 

} 

使用记录应该是这样的

public class SomeActivity extends Activity { 

    public void someMethodThatUsesDataSet(){ 
     // Create a dataset object with some data you want the save and a context 
     // The context we use here is 'this', this is the current instance of SomeActivity, 
     // you absolutely need this, I think this is what you're doing wrong, 
     // you can't use ctx here because that's not a known variable at this point 
     DataSet example = new DataSet(this, "data you want to save"); 

     // Tell Sugar to save this record in the database 
     example.save(); 
    } 
} 
012的活动
+0

LocationDataSet是我的代码中的类的原始名称,我忘了它将其更改为DataSet。 – Miller

+0

使用“this”是什么意思?如果我只是用“this”替换“ctx”,Eclipse立即抛出错误“构造函数DataSet(ShowLocationActivity,long,long,double,double,float,float,String,boolean,int,int,String,int)未定义“(如果我在给班级打电话时使用它) – Miller

+0

如果你的ShowLocationActivity扩展了Activity,它是一个有效的上下文。你确定构造函数的其他参数的类型是正确的吗? – Quentin

相关问题