Android SharedPreferences没有通过editor.commit进行更改

use*_*086 2 android sharedpreferences

我想在点击其他偏好时更改首选项.我用onSharedPreferenceChanged方法做了这个,并用这样的编辑器设置值...

public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
    Preference pref = findPreference(key);

    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);

    SharedPreferences.Editor editor = settings.edit();

    editor.putString("sound","2");
    editor.commit();
    Intent intent3 = new Intent(this, Prefer.class);
    startActivity(intent3);  
    this.setSummary(pref);
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误,editor.commit();我的代码在后台运行了好几次,然后才给出StatckOverflow错误......我做错了什么?

比你

Blu*_*ell 6

你的来电,

 onSharedPreferenceChanged
Run Code Online (Sandbox Code Playgroud)

然后你的呼唤

 editor.commit();
Run Code Online (Sandbox Code Playgroud)

通过commit(),您将更改共享首选项,从而调用

 onSharedPreferenceChanged
Run Code Online (Sandbox Code Playgroud)

所以循环继续.....直到你StackOverflow

*我的圣诞节SharedPreferences API链接*