DefaultSharedPreferences() 不清除 () 值

DefaultSharedPreferences() does not clear() values

我在整个申请过程中使用 defaultSharedPreferences()。我在我的 Application class 中定义了一次,并在需要时使用它:

public class Itu extends Application {
public static SharedPreferences sharedPreferencesFDefault;

@Override
public void onCreate() {
    sharedPreferencesFDefault = PreferenceManager.getDefaultSharedPreferences(this); 
}
public static SharedPreferences getSharedPreferencesItu(){
    return sharedPreferencesFDefault;
}
public static int getStudentNameColor(SharedPreferences sharedPref){
    int color = sharedPref.getInt("studentNameColor", -1);
    if (color == -1) {
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putInt("studentNameColor", 0);
        editor.commit();
        color = sharedPref.getInt("studentNameColor", 0);
    }
    ....
    return color;
}

我用这个Activity:

public class StudentAddActivity extends ActionBarActivity {
...
    private void attemptAdd() {
        SharedPreferences sharedPref=((Itu)getApplication()).getSharedPreferencesItu();
        int color=Itu.getStudentNameColor(sharedPref);
}

现在我想从另一个 activity 中删除所有值,这不起作用:

public class CourseListActivity extends ActionBarActivity{
    public static SharedPreferences sharedPreferencesFDefault;
    ...
    sharedPreferencesFDefault = ((Itu) getApplication()).getSharedPreferencesItu();
    sharedPreferencesFDefault.edit().clear().commit();
}

在我调用 sharedPreferencesFDefault.edit().clear().commit(); 之后,我仍然看到我的 "studentNameColor" 值存在于 defaultSharedPreferences

可能是什么问题?使用 defaultSharedPreferences 而不是 sharedPreference?或者传递应用程序上下文而不是每个 activity 的上下文?或者我调用了错误的删除函数?

更新 1: 我可以从我的应用程序 class 中删除它,但不能从我的活动中删除它。为什么?

更新 2: 我现在可以通过直接访问变量从另一个 activity 中删除它:

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

但是如果我通过静态函数获取 sharedPreference 变量,我无法清除它,为什么?

我已将 public static SharedPreferences sharedPreferencesFDefault; 更改为 public SharedPreferences sharedPreferencesFDefault;,现在 clear() 有效。问题是从应用程序 class 获取 static sharedPreference 到 Activity class.

static 变量

我仍然不知道当我们用另一个 static 变量初始化 static 变量时会发生什么。你可以关注那个问题 here.