PreferenceActivity使用示例 (二)

2014-11-24 10:36:23 · 作者: · 浏览: 1
tem.out.println("切换后值为:"+newValue.toString());
}
return true;
}

}

@Override
public void onBackPressed() {
getValuesFromSP();
super.onBackPressed();
}

// 从PreferenceActivity的SharedPreferences中取数据
private void getValuesFromSP(){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
Boolean first_value = sp.getBoolean(getResources().getString(R.string.first_key), false);
String listpreference_key = sp.getString(getResources().getString(R.string.listpreference_key), null);
System.out.println("从SharedPreferences中取出的是:" + first_value);
System.out.println("从SharedPreferences中取出的是:" + listpreference_key);
}
}

package cn.testpreferenceactivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
/**
* Demo描述:
* PreferenceActivity的使用示例
*
* 注意事项:
* 1 不要ListPreference的属性android:dialogMessage
* 若设置则无法弹出选择列表.
* 这和单选,多选对话框类似不能设置其Message.
* 2 不要ListPreference的属性android:positiveButtonText
* 即使设置也无效
* 3 注意ListPreference的默认值的设定
* android:defaultValue="222"
* 该值必须是 android:entryValues="@array/values_array"
* 这个数组中包含的值!!!!!!!!!!!!!
*

*

* Thank you very much
*/
public class MainActivity extends PreferenceActivity {
private CheckBoxPreference mCheckBoxPreference;
private ListPreference mListPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferenceactivity);
init();
}
private void init(){
mCheckBoxPreference=
(CheckBoxPreference) findPreference(getResources().getString(R.string.first_key));
mCheckBoxPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
mCheckBoxPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl());

mListPreference=
(ListPreference) findPreference(getResources().getString(R.string.listpreference_key));
mListPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
mListPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl());
}

private class PreferenceClickListenerImpl implements OnPreferenceClickListener{
@Override
public boolean onPreferenceClick(Preference preference) {
String preferenceKey=preference.getKey().toString();
if (preferenceKey.equals(getResources().getString(R.string.first_key))) {
System.out.println("点击了CheckBoxPreference");
}
if (preferenceKey.equals(getResources().getString(R.string.listpreference_key))) {
System.out.println("点击了ListPreference");
}
return true;
}
}

/**
* 注意事项:
* 在OnPreferenceChangeListener的onPreferenceChange()
* 可知改变后的值,但该值还未真正存入尚在内存中贮存.
* 所以此时调用getValuesFromSP得到的只是改变前的值.
*