2015-04-07 81 views

回答

2

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

謝謝,但它仍然會觸發** ** onSharedPreferenceChangeListener每一個喜好變動聲明 – user2814778

+0

我編輯完成我的答案,它可能有助於你很多。請再讀一遍。 –

+0

太好了,謝謝!但儘管它一次採用所有更改,** onSharedPreferenceChangeListener ** _get調用了多次times_:l – user2814778

相關問題