2011-08-02 12 views
5

Tengo una clase ContentProvider y una clase DatabaseHelper (se extiende SQLiteOpenHelper). El ContentProvider instancia el ayudante, que necesita acceder a un Contexto porque el constructor lo requiere:Contexto de acceso en ContentProvider

public DBHelper(Context context, AssetFileDescriptor db_asset) { 
    super(context, DB_NAME, null, 1); 

¿Sabe usted al menos una única forma de obtener el contexto de la ContentProvider?

Gracias :)

Respuesta

15

En el método de ContentProvider.onCreate puede pasar el resultado de getContext() a la DBHelper

@Override 
    public boolean onCreate() { 
     dbHelper = new DBHelper(getContext(), db_asset); 
     return true; 
    } 
+0

gracias, estaba enfocado en pasar "esto" como de costumbre con los constructores, no entendí Idea para probar algo tan trivial :) – Julian

+0

"enfocado en pasar esto" - debe pasar el contexto de la aplicación en lugar del contexto de la actividad para evitar la memoria fugas, ver [esta publicación] (http://android-developers.blogspot.cz/2009/01/avoiding-memory-leaks.html). – shmoula

+0

Bueno, Julian, no es tu culpa si no hay mucha consistencia en "this", "getActivity()", "getContext()", etc. use. – ULazdins

1

probar este mi amigo:

SampleClass sample = new SampleClass(this.getContext()); 

Dónde this se refieren a la clase que amplíe la ContentProvider ... Y .getContext() obtendrá el contexto de la clase que amplíe la ContentProvider ..

Espero que este ayude ..

Cuestiones relacionadas