我(具有平庸的开发技能)实际上尝试使用Sugar作为我的android项目的数据库包装器。 因此,我按照“入门指南”(http://satyan.github.io/sugar/getting-started.html)跟进,以便尽快做好准备。
我为我的实体创建了一个名为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 :(得分:0)
首先,get-started-note告诉你需要一个只有一个context参数的构造函数,你在这里做了这个就好了
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();
}
}