如何将Context实例注入类型转换器?

时间:2018-05-03 05:30:24

标签: android android-room

我有一个类型转换器,如:

class DateConverter {
    Context mContext;

    public DateConverter(Context context) {
        mContext = context;
    }

    @TypeConverter
    public Foobar toFoobar(String str) {
        return App.get(mContext).getComponent()
                .getFoobarManager().convert(str);
    }
}

我遇到的问题是我不知道在DateConverter实例中注入上下文。

PS: 该项目使用的是dagger2,所以我更喜欢使用注入而不是引用静态的Context实例。

提前致谢!

1 个答案:

答案 0 :(得分:0)

将构造函数更改为public DateConverter()作为我们将通过dagger2添加的上下文。

如果您在项目中使用过dagger2,则必须有任何组件类。组件基本上是应用程序中的一个接口,它允许视图通过匕首注入。必须有一些名称inject()具有不同参数的方法,例如

    public abstract void inject(MainActivity activity);
    public abstract void inject(DaggerApplication daggerApplication);

为您的DateConverter

创建自己的方法
public abstract void inject(DateConverter dateconverter);

现在在DateConverter中添加使用此注入方法,就像在其他类中使用它一样。还可以在DateConverter

中定义以下代码
    @Inject
    Context context;