此代码显示错误“无法解析方法makeText”

时间:2017-08-25 02:22:00

标签: java android

 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

2 个答案:

答案 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();