有没有办法将 onSharedPreferenceChangeListener 保留到最后一次更改?

Is there a way to hold up onSharedPreferenceChangeListener until last change?

在设置 activity 中,我有多个字段,一旦用户按下保存,所有这些字段将作为键值单独存储在 sharedPreference 中。

问题是每次编辑器更改,例如

editor.putString(SERVER, server.toString());

将触发 onSharedPreferenceChangeListener

虽然我只需要在更新所有值后触发它.. 有什么办法可以达到这个要求吗? 非常感谢

只有一种方法可以做到这一点。您可以将 editor.putString(SERVER, server.toString()); 放在运行时代码中,例如按下按钮。一旦 activity 在 onDestroy() 方法中调用 editor.commit(); 被销毁,它将保存值并触发 onSharedPreferenceChangeListener。简单地说,等待用户先关闭 activity 这意味着用户已经更改了所有设置。

注意:请确保editor是一个实例变量或为它创建一个字段。

编辑

给你举个例子:

public class SettingsActivity extends Activity {

    // a field for preference
    private SharedPreferences.Editor editor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences sharedpreferences = getSharedPreferences("MyPreference", Context.MODE_PRIVATE);
        editor = sharedpreferences.edit();

        // for example, edit the value using a button at runtime
        Button button = (Button)findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                editor.putString(SERVER, server.toString());
            }
        });
        ...
    }

    @Override
    protected void onDestroy(){
        // call commit to save all changes
        editor.commit();
        super.onDestroy();
    }
}