Funciona en MainAcitvity.class, pero no funciona en QueryUtils.class.

private WeatherDBHelper weatherDBHelper = new WeatherDBHelper(this); 

enter image description here

-5
Blithe 9 may. 2017 a las 05:34

3 respuestas

La mejor respuesta

Asegúrese de que el constructor WeatherDBHelper reciba el contexto como parámetro

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

EDITAR

El WeatherDBHelper solo recibe Context como parámetro. QueryUtils no tiene el tipo de contexto.

Se puede hacer donde agregar contexto en la clase QueryUtils

Context context;
private WeatherDBHelper weatherDBHelper;
public QueryUtils(Context context){
     this.context = context;
     weatherDBHelper = new WeatherDBHelper(context); 
}

Uso en MainActivity

QueryUtils qt = new QueryUtils(this);
1
ZeroOne 9 may. 2017 a las 03:03

El problema es que WeatherDBHelper necesita un objeto Context y QueryUtils no es del tipo Context, por lo que this no funcionará aquí.

La razón por la que puede usar this con éxito en MainActivity es que MainActivity es un Activity, que es una clase secundaria de Context. Aquí está su jerarquía de objetos:

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

Entonces, en MainActivity, this se refiere a un objeto que en realidad es un Context. En QueryUtils no lo hace.

En realidad, necesita pasar un Context a esto.

0
EJoshuaS - Reinstate Monica 9 may. 2017 a las 03:04

Su clase QueryUtilis debería extender SQLiteOpenHelper

0
Vijay Ankith 9 may. 2017 a las 02:55