2015-04-07 49 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

相关问题