这是我的代码:
@Module
class SharedPrefs {
@Module
companion object {
val KEY_COOKIE = "cookie"
@JvmStatic
@Provides
fun putPref(key: String, value: String?) {
val prefs = PreferenceManager.getDefaultSharedPreferences(App.context)
val editor = prefs.edit()
editor.putString(key, value)
editor.commit()
}
@JvmStatic
@Provides
fun getPref(key: String): String? {
val preferences = PreferenceManager.getDefaultSharedPreferences(App.context)
return preferences.getString(key, null)
}
@JvmStatic
@Provides
var cookie : String?
get() = getPref(KEY_COOKIE)
set(value) {
putPref(KEY_COOKIE, value)
}
}
}
var cookie上方的最后@provides产生以下编译错误:
如果没有以下内容,此注释不适用于目标成员属性 支持字段或委托
我该如何纠正?
答案 0 :(得分:1)
尝试使用@get:Provides
代替@Provides
上的var cookie
。
编辑:
顺便说一句,我想我知道Providing
这个var
的意思,而且我不相信Dagger会允许您这样做。它将只从吸气剂中读取值,并能够在图形中提供Nullable
String
。
您需要将这两个函数(setter
的{{1}}和getter
)包装到某种包装对象中,并在Dagger中提供此包装,而不是{{1 }}。