В чем причина метода getSharedPreferences, вызванного не созданием экземпляра ContextWrapper в Kotlin? - PullRequest
0 голосов
/ 11 февраля 2020

я написал код, подобный приведенному ниже,

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

и получил удивление, что root методов '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)

- это способ использовать этот метод.

как это возможно?

1 Ответ

0 голосов
/ 11 февраля 2020

Итак, вы вызываете метод getSharedPreferences из вашего AppCompatActivity. Это совершенно правильно.

AppCompatActivity расширяет FragmentActivity, который расширяет ComponentActivity, который расширяет Activity, который расширяет ContextThemeWrapper, который расширяет ContextWrapper, который расширяет Context. Context - это класс abstract, который фактически определяет метод (ы) getSharedPreferences.

Вызов метода getSharedPreferences(String name, int mode) с использованием Activity фактически вызывает ContextWrapper getSharedPreferences(String name, int mode), поскольку Activity наследует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...