在上一节中,大家已经看到了,PreferenceActivity这个类允许用户在运行时去创建和修改首选项信息。如果想要使用这些首选项信息,你就悬哦使用SharedPreferences这个类。
1. 继续使用上一节中的工程,在UsingPreferences.java中添加一些代码。
public class UsingPreferencesActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void onClickLoad(View view) { Intent i = new Intent("net.manoel.AppPreferenceActivity"); startActivity(i); } public void onClickDisplay(View view) { SharedPreferences appPrefs = getSharedPreferences("net.manoel.UsingPreferences_preferences", MODE_PRIVATE); DisplayText(appPrefs.getString("editTextPref", "")); } public void onClickModify(View view) { SharedPreferences appPrefs = getSharedPreferences("net.manoel.UsingPreferences_preferences", MODE_PRIVATE); SharedPreferences.Editor prefsEditor = appPrefs.edit(); prefsEditor.putString("editTextPref", ((EditText) findViewById(R.id.txtString)).getText().toString()); prefsEditor.commit(); } private void DisplayText(String str) { Toast.makeText(getBaseContext(), str, Toast.LENGTH_LONG).show(); }}2. 按F11在模拟器上面调试。这一次点击Display Preferences Values 这个按钮,将会看到:
3. 在EditText中输入一些字符,然后点击Modify Preferences Values按钮。

4. 再次点击Display Preferences Values按钮,可以看到,首选项中的值被更新了。
在onClickDisplay()方法中,使用getSharedPreferences()去获取SharedPreferences类的实例。这里我指定了xml文件的名字“net.manoel.UsingPreferences_preferences”。通常格式是包名_preferences。我还使用了getString()去获取一个字符串,这个字符串作为预设信息的键值:
public void onClickDisplay(View view) { SharedPreferences appPrefs = getSharedPreferences("net.manoel.UsingPreferences_preferences", MODE_PRIVATE); DisplayText(appPrefs.getString("editTextPref", "")); }MODE_PRIVATE常量说明这个首选项文件只能被创建它的程序打开。在OnClickModify()方法中,我通过SharedPreferences对象的edit()方法创建了一个SharedPreferences.Editor对象。如果想要改变一个字符串预设值,就用putString()方法。最后,使用commit()方法去保存:
public void onClickModify(View view) { SharedPreferences appPrefs = getSharedPreferences("net.manoel.UsingPreferences_preferences", MODE_PRIVATE); SharedPreferences.Editor prefsEditor = appPrefs.edit(); prefsEditor.putString("editTextPref", ((EditText) findViewById(R.id.txtString)).getText().toString()); prefsEditor.commit(); }