只有一种方法可以做到这一点。您可以在运行时代码中输入editor.putString(SERVER, server.toString());
,例如按下按钮。一旦活动被破坏,在onDestroy()
方法内调用editor.commit();
,它将保存该值并激发onSharedPreferenceChangeListener
。简单地说,等待用户先关闭活动,这意味着用户已经更改了所有设置。
注意:请确保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();
}
}
谢谢,但它仍然会触发** ** onSharedPreferenceChangeListener每一个喜好变动声明 – user2814778
我编辑完成我的答案,它可能有助于你很多。请再读一遍。 –
太好了,谢谢!但尽管它一次采用所有更改,** onSharedPreferenceChangeListener ** _get调用了多次times_:l – user2814778