Accessing static SharedPreference variable directly VS through Getter function

大城市里の小女人 提交于 2019-12-25 07:49:52

问题


I have static DefaultSharedPreference variable defined as like here:

public class Itu extends Application {
    public static SharedPreferences sharedPreferencesFDefault;

    @Override
    public void onCreate() {
        sharedPreferencesFDefault = PreferenceManager.getDefaultSharedPreferences(this); 
    }
    public static SharedPreferences getSharedPreferencesItu(){
        return sharedPreferencesFDefault;
    }
}

(1. way) When i access it directly from some Activity, it clears sharedPreference:

((Itu) getApplication()).sharedPreferencesFDefault.edit().clear().commit();

(2. way) But when i access it through Getter method and try to clear() it, it does NOT work:

public static SharedPreferences sharedPreferencesFDefault;
sharedPreferencesFDefault = ((Itu) getApplication()).getSharedPreferencesItu();
sharedPreferencesFDefault.edit().clear().commit();

Old question: What is the difference between 1.way and 2.way?

UPDATE: I changed public static SharedPreferences sharedPreferencesFDefault to public SharedPreferences sharedPreferencesFDefault and both ways worked.

New question: What happens when i initialize static variable with another static variable indeed?

来源:https://stackoverflow.com/questions/29605084/accessing-static-sharedpreference-variable-directly-vs-through-getter-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!