如何获取KoinComponent中的SharedPreferences?

How to get SharedPreferences in KoinComponent?

我在 SettingsFragment 中使用 SharedPreferences:

val myPrefs = activity?.getSharedPreferences("myPrefs", Context.MODE_PRIVATE) ?: return
val testEnvEnabled = myPrefs.getBoolean(getString(R.string.saved_test_env_key), false)

这工作得很好。

然后我需要在 object Api 中准备好这些首选项:KoinComponent {

我无法获取上下文或 activity。

还有其他方法可以从共享偏好中获取信息吗?

对我来说,重要的是保存一个信息,如果测试环境。是开还是关。

我正在通过切换在 SettingsFragment 中保存该信息。

谢谢

你可以像这样使用;

class Api : KoinComponent {
    private val sharedPreferences by inject<SharedPreferences> {
        parametersOf("myPref")
    }

    fun test() {
        sharedPreferences.edit().putInt("Test", 1).commit()
    }

    fun get(): Int {
        return sharedPreferences.getInt("Test", -1)
    }
}

val sharedPreferences = module {
    factory { key ->
        androidContext().getSharedPreferences(key.get<String>(0), Context.MODE_PRIVATE)
    }
    factory {
        Api()
    }
}

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin {
            androidContext(this@App)
            modules(sharedPreferences)
        }
    }
}

enter code here