public void deleteRecord() {
SQLiteDatabase db = this.getWritableDatabase();
//Delete the table
int check= db.delete(TABLE_NAME, null, null);
if(check>0){
Toast.makeText(DatabaseHelper.this,"Data
Updated",Toast.LENGTH_LONG).show();
//this showing error "cannot resolve makeText method
}
else
Toast.makeText(DatabaseHelper.this,"Data not
Updated",Toast.LENGTH_LONG).show();
//this showing error "cannot resolve makeText method
}
这是我在android中的java类。这可能是在java类中应用Toast
答案 0 :(得分:1)
基本上DatabaseHelper类不是Activity。您无法在DBHelper类中提供任务,因为它没有UI。
答案 1 :(得分:0)
粗略地说this
指的是当前的类实例。因此,在DataBasehelper中使用this
是指DatabaseHelper,而不是调用它的Activity。
作为DatabaseHelper(实际上它是SQLiteOpenHelper类的子类)需要一个Context。例如你可以有以下几点: -
class DBHelper extends SQLiteOpenHelper {
private context;
DBHelper(Context context, String databasename, int databaseversion) {
super(context, databasename, null, databaseversion);
this.context = context;
}
}
然后在使用Toast.makeText(context,"my toast",LENGTH.LONG).show();
的方法中编译并运行时没有错误。即,您正在使用有效的 Context
,因为它来自调用活动。但是,我不认为Toast会显示出来。
我建议使用两种替代方案中的一种。
1)你可以写日志,例如,而不是: -
Toast.makeText(DatabaseHelper.this,"Data
Updated",Toast.LENGTH_LONG).show();
您可以使用: -
Log.d("YOURTAG","Data Updated");
在这种情况下,日志中会有一行,例如
08-25 15:04:29.722 17757-17757/mjt.cardoniser D/YOURTAG: Data Updated
2)或者,您可以返回状态或字符串,然后将其用作Toast的基础。例如
如果您的DBHelper中有以下内容
public boolean deleteRecord() {
SQLiteDatabase db = this.getWritableDatabase();
//Delete the table
int check= db.delete(TABLE_NAME, null, null);
return (check > 0);
}
在您的调用活动中,您可以: -
if (myDBHelper.deleteRecord()) {
Toast.makeText(this,"Data
Updated",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(DatabaseHelper.this,"Data not
Updated",Toast.LENGTH_LONG).show();
}
或者你可以: -
public String deleteRecord() {
SQLiteDatabase db = this.getWritableDatabase();
//Delete the table
if(db.delete(TABLE_NAME, null, null) > 0) {
return "Data Updated";
}
return "Data not Updated";
}
与您的调用活动中的以下内容一起: -
Toast.makeText(this,myDBHelper.deleteRecord(),LENGTH_LONG).show();