2011-08-02 20 views
5

Mam Klasa ContentProvider i DatabaseHelper Class (rozszerza SQLiteOpenHelper). ContentProvider instancję Helper który potrzebuje dostępu do kontekstu, ponieważ konstruktor wymaga:Kontekst dostępu w ContentProvider

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

Znasz przynajmniej jeden sposób, aby uzyskać kontekst ze ContentProvider?

Dzięki :)

Odpowiedz

15

W swojej metodzie ContentProvider.onCreate można przekazać wynik getContext() do DBHelper

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

dziękuję, skupiłem się na przekazywaniu "tego" jak zwykle konstruktorom, nie otrzymałem pomysłu na wypróbowanie czegoś tak trywialnego :) – Julian

+0

"skupiłem się na przekazywaniu tego" - powinieneś przekazać kontekst aplikacji zamiast kontekstu działania, aby zapobiec pamięci wycieki, patrz [ten post] (http://android-developers.blogspot.cz/2009/01/avoiding-memory-leaks.html). – shmoula

+0

Cóż, Julian, to nie twoja wina, jeśli nie ma sporej spójności w "tym", "getActivity()", "getContext()", itp. Użyj. – ULazdins

1

Spróbuj przyjacielu:

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

Gdzie this odnoszą się do klasy, która rozszerza ContentProvider ... I .getContext() dostanie kontekst klasy, która rozszerza ContentProvider ..

Mam nadzieję, że ten pomaga ..

Powiązane problemy