只有一種方法可以做到這一點。您可以在運行時代碼中輸入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