2011-08-02 58 views
5

我有一個ContentProvider類和一個DatabaseHelper類(擴展SQLiteOpenHelper)。 的ContentProvider的實例,因爲構造函數需要它這需要訪問上下文的助手:ContentProvider中的訪問上下文

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

你知道至少有一個單一的方式來獲得從ContentProvider的語境?

謝謝:)

回答

15

在你ContentProvider.onCreate方法,你可以傳遞的getContext(的結果)的DBHelper

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

謝謝,我專注於像構造函數一樣傳遞「this」,沒有得到想要嘗試一些微不足道的想法:) – Julian

+0

「專注於傳遞這個」 - 您應該傳遞應用程序上下文而不是活動上下文來防止內存泄漏,請參閱[本文](http://android-developers.blogspot.cz/2009/01/avoiding-memory-leaks.html)。 – shmoula

+0

好吧,朱利安,如果「this」,「getActivity()」,「getContext()」等用法沒有太大的一致性,那不是你的錯。 – ULazdins

1

試試這個我的朋友:

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

this指的是擴展ContentProvider的類... 而.getContext()將得到擴展ContentProvider的類的上下文..

希望這個幫助..