无法添加参数'this'

时间:2017-05-09 02:34:54

标签: java android sqlite

它适用于MainAcitvity.class,但在QueryUtils.class中不起作用。

private WeatherDBHelper weatherDBHelper = new WeatherDBHelper(this); 

enter image description here

3 个答案:

答案 0 :(得分:1)

确保WeatherDBHelper构造函数接收Context as param

Public class WeatherDBHelper{
     Context context;
     public WeatherDBHelper(Context context){
         this.context = context;
     }
     ....
}

修改

WeatherDBHelper仅接收上下文作为参数。 QueryUtils没有Context类型。

可以在QueryUtils类

中添加上下文的地方完成
Context context;
private WeatherDBHelper weatherDBHelper;
public QueryUtils(Context context){
     this.context = context;
     weatherDBHelper = new WeatherDBHelper(context); 
}

在MainActivity中使用

QueryUtils qt = new QueryUtils(this);

答案 1 :(得分:0)

您的类QueryUtilis应该 扩展SQLiteOpenHelper

答案 2 :(得分:0)

问题在于WeatherDBHelper需要Context个对象且QueryUtils不属于Context类型,因此this赢得了“{1}}在这里工作。

您可以this成功使用MainActivity的原因是MainActivityActivity,这是Context的子类。这是它的对象层次结构:

java.lang.Object 
↳
    android.content.Context 
    ↳
        android.content.ContextWrapper 
        ↳
            android.view.ContextThemeWrapper 
            ↳
                android.app.Activity

因此,在MainActivity中,this指的是一个实际上是Context的对象。在QueryUtils它没有。

您实际上需要将Context传递给此。