[Java] Android下PreferenceActivity使用示例 →→→→→进入此内容的聊天室

来自 , 2019-09-07, 写在 Java, 查看 165 次.
URL http://www.code666.cn/view/c1aff675
  1. package cn.testpreferenceactivity;
  2. import android.content.SharedPreferences;
  3. import android.os.Bundle;
  4. import android.preference.CheckBoxPreference;
  5. import android.preference.ListPreference;
  6. import android.preference.Preference;
  7. import android.preference.Preference.OnPreferenceChangeListener;
  8. import android.preference.Preference.OnPreferenceClickListener;
  9. import android.preference.PreferenceActivity;
  10. import android.preference.PreferenceManager;
  11. /**
  12.  * Demo描述:
  13.  * PreferenceActivity的使用示例
  14.  *
  15.  * 注意事项:
  16.  * 1 不要ListPreference的属性android:dialogMessage
  17.  *   若设置则无法弹出选择列表.
  18.  *   这和单选,多选对话框类似不能设置其Message.
  19.  * 2 不要ListPreference的属性android:positiveButtonText
  20.  *   即使设置也无效
  21.  * 3 注意ListPreference的默认值的设定
  22.  *   android:defaultValue="222"
  23.  *   该值必须是 android:entryValues="@array/values_array"
  24.  *   这个数组中包含的值!!!!!!!!!!!!!
  25.  *  
  26.  *  
  27.  * 参考资料:
  28.  * 1 http://www.cnblogs.com/adm1989/archive/2012/08/01/2618403.html
  29.  * 2 http://www.eoeandroid.com/forum.php?mod=viewthread&tid=188859
  30.  *   Thank you very much
  31.  */
  32. public class MainActivity extends PreferenceActivity {
  33.    private CheckBoxPreference mCheckBoxPreference;
  34.    private ListPreference mListPreference;
  35.         @Override
  36.         protected void onCreate(Bundle savedInstanceState) {
  37.                 super.onCreate(savedInstanceState);
  38.                 addPreferencesFromResource(R.xml.preferenceactivity);
  39.                 init();
  40.         }
  41.         private void init(){
  42.                 mCheckBoxPreference=
  43.             (CheckBoxPreference) findPreference(getResources().getString(R.string.first_key));
  44.                 mCheckBoxPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
  45.                 mCheckBoxPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl());
  46.                
  47.                 mListPreference=
  48.             (ListPreference) findPreference(getResources().getString(R.string.listpreference_key));
  49.                 mListPreference.setOnPreferenceChangeListener(new PreferenceChangeListenerImpl());
  50.                 mListPreference.setOnPreferenceClickListener(new PreferenceClickListenerImpl());
  51.         }
  52.        
  53.         private class PreferenceClickListenerImpl implements OnPreferenceClickListener{
  54.                 @Override
  55.                 public boolean onPreferenceClick(Preference preference) {
  56.                         String preferenceKey=preference.getKey().toString();
  57.                         if (preferenceKey.equals(getResources().getString(R.string.first_key))) {
  58.                                 System.out.println("点击了CheckBoxPreference");
  59.                         }
  60.                         if (preferenceKey.equals(getResources().getString(R.string.listpreference_key))) {
  61.                                 System.out.println("点击了ListPreference");
  62.                         }
  63.                         return true;
  64.                 }
  65.         }
  66.        
  67.         /**
  68.          * 注意事项:
  69.          * 在OnPreferenceChangeListener的onPreferenceChange()
  70.          * 可知改变后的值,但该值还未真正存入尚在内存中贮存.
  71.          * 所以此时调用getValuesFromSP得到的只是改变前的值.
  72.          *
  73.          */
  74.         private class  PreferenceChangeListenerImpl implements OnPreferenceChangeListener{
  75.                 @Override
  76.                 public boolean onPreferenceChange(Preference preference, Object newValue) {
  77.                         String preferenceKey=preference.getKey().toString();
  78.                         if (preferenceKey.equals(getResources().getString(R.string.first_key))) {
  79.                                 System.out.println("切换后值为:"+newValue.toString());
  80.                         }
  81.                         if (preferenceKey.equals(getResources().getString(R.string.listpreference_key))) {
  82.                                 System.out.println("切换后值为:"+newValue.toString());
  83.                         }
  84.                         return true;
  85.                 }
  86.                
  87.         }
  88.        
  89.         @Override
  90.         public void onBackPressed() {
  91.                 getValuesFromSP();
  92.                 super.onBackPressed();
  93.         }
  94.        
  95.         // 从PreferenceActivity的SharedPreferences中取数据
  96.         private void getValuesFromSP(){
  97.                 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
  98.                 Boolean first_value = sp.getBoolean(getResources().getString(R.string.first_key), false);
  99.                 String listpreference_key = sp.getString(getResources().getString(R.string.listpreference_key), null);
  100.                 System.out.println("从SharedPreferences中取出的是:" + first_value);
  101.                 System.out.println("从SharedPreferences中取出的是:" + listpreference_key);
  102.         }
  103. }
  104.  
  105.  
  106. //java/7812

回复 "Android下PreferenceActivity使用示例"

这儿你可以回复上面这条便签

captcha