2015-11-08 29 views
0

我對Dagger2不熟悉,現在我想嘗試一下。到目前爲止,除了例外,所有事情都將發生。我如何使用Dagger2和CursorLoader

現在我想在我的片段中使用CursorLoader和(當然)我有一個問題,我的數據庫注入我的ContentProvider。到目前爲止,我可以在調用類中注入一切,但現在我不知道在哪裏注入我的dbHelper類。這裏是我得到NPE的兩個片段。

// My Fragment code... works fine 
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    return new CursorLoader(getContext(), CategoriesProvider.uriCategories(), 
      CategoryContract.CATEGORIE_PROJECTION, null, null, null); 
} 

在我的ContentProvider我想注入DBHelper類...

@Inject 
public CategoriesProvider(DBHelper dbHelper) { 
    this.dbHelper = dbHelper; 
} 

我不知道如何使這兩個元素之間的連接.. 希望你能理解我:)

回答

1

如何Activity S和Service S(有時Fragment S)是由框架創建類似,您不能使用構造函數注射ContentProvider秒。如果您將void inject(CategoriesProvider categoriesProvider);方法添加到您的@Component,那麼在您的CategoriesProvider.onCreate()方法中,您可以獲取組件並致電component.inject(this);

值得一提的是,Application類不會被初始化之後才ContentProvider就做,因此,如果您@ComponentApplication舉行,我相信getContext().getApplicationContext()將返回null。看到這個問題:https://code.google.com/p/android/issues/detail?id=8727

相關問題