我如何使用 Dagger2 和 CursorLoader
How can i use Dagger2 and CursorLoader
我对 Dagger2 不熟悉,现在想尝试一下。
目前为止一切正常。
现在我想在我的片段中使用 CursorLoader 并且(当然)我在将我的数据库注入我的 ContentProvider 时遇到了问题。到目前为止,我可以在调用 class 中注入所有内容,但现在我不知道在哪里注入我的 dbHelper class。这是我得到 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 class...
@Inject
public CategoriesProvider(DBHelper dbHelper) {
this.dbHelper = dbHelper;
}
我不知道如何在这两个元素之间建立联系..
希望你理解我:)
类似于框架创建 Activity
s 和 Service
s(有时 Fragment
s)的方式,您不能使用 ContentProvider
的构造函数注入秒。如果您将 void inject(CategoriesProvider categoriesProvider);
方法添加到您的 @Component
,那么在您的 CategoriesProvider.onCreate()
方法中您可以获得您的组件并调用 component.inject(this);
.
值得注意的是 Application
class 直到 ContentProvider
之后才被初始化,所以如果你的 @Component
被保存在你的 Application
,我相信 getContext().getApplicationContext()
会 return null
。看到这个问题:https://code.google.com/p/android/issues/detail?id=8727.
我对 Dagger2 不熟悉,现在想尝试一下。 目前为止一切正常。
现在我想在我的片段中使用 CursorLoader 并且(当然)我在将我的数据库注入我的 ContentProvider 时遇到了问题。到目前为止,我可以在调用 class 中注入所有内容,但现在我不知道在哪里注入我的 dbHelper class。这是我得到 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 class...
@Inject
public CategoriesProvider(DBHelper dbHelper) {
this.dbHelper = dbHelper;
}
我不知道如何在这两个元素之间建立联系.. 希望你理解我:)
类似于框架创建 Activity
s 和 Service
s(有时 Fragment
s)的方式,您不能使用 ContentProvider
的构造函数注入秒。如果您将 void inject(CategoriesProvider categoriesProvider);
方法添加到您的 @Component
,那么在您的 CategoriesProvider.onCreate()
方法中您可以获得您的组件并调用 component.inject(this);
.
值得注意的是 Application
class 直到 ContentProvider
之后才被初始化,所以如果你的 @Component
被保存在你的 Application
,我相信 getContext().getApplicationContext()
会 return null
。看到这个问题:https://code.google.com/p/android/issues/detail?id=8727.