不通过在Kotlin中不创建ContextWrapper实例来调用'getSharedPreferences'方法的原因是什么?

问题描述 投票:0回答:1

我写了如下代码,

val preference by lazy {
    getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)
}

并且很奇怪'getSharedPredferences'方法的根..

所以我找到了API ..

public class ContextWrapper extends Context {
    @Override
    public SharedPreferences getSharedPreferences(String name, int mode) {
        return mBase.getSharedPreferences(name, mode);
    }
}

使用我在第一个代码中编写的getSharedPreferences方法正确吗?

我认为..

ContextWrapper().getSharedPreferences("PreExActivity", Context.MODE_PRIVATE)

是使用该方法的方法。

怎么可能?

android kotlin sharedpreferences
1个回答
0
投票

因此您正在从getSharedPreferences调用AppCompatActivity方法。这是完全正确的。

AppCompatActivity扩展FragmentActivity,扩展ComponentActivity,扩展Activity,扩展ContextThemeWrapper,扩展ContextWrapper,扩展ContextContext是一个abstract类,实际上定义了getSharedPreferences方法。

由于getSharedPreferences(String name, int mode)继承了Activity,因此实际上是在调用ContextWrappergetSharedPreferences(String name, int mode)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.