Извлечь предпочтение из макета предпочтений XML - PullRequest
0 голосов
/ 07 ноября 2010

Хорошо, так что я уже некоторое время работаю над этим, я знаю, что это должно быть проще, чем я делаю это, но я пытаюсь сделать так, чтобы у меня был мой макет предпочтений xml или как вы хотите его назвать,В этом макете у меня есть несколько флажков: элемент списка и текст редактирования. Мне нужно получить эти настройки из макета XML, затем мне нужно сохранить их и прочитать в другом упражнении.Я немного поработал с ними, однако у меня всегда было действие, которое сохраняло строки, затем я расширял это действие в рамках действия, для которого мне нужны настройки.Я знаю, что в интернете есть сотни таких руководств, но я просто не понимаю, как их реализовать.Вот мой код.

  public class MyPreference extends PreferenceActivity 
{
 @Override
 protected void onCreate(Bundle savedInstanceState) 
 {
  SharedPreferences sharedPreference = getSharedPreferences("PREFERENCES", Activity.MODE_PRIVATE);

  requestWindowFeature(Window.FEATURE_NO_TITLE);
  super.onCreate(savedInstanceState);  
  addPreferencesFromResource(R.layout.random_pref);

  // Get the custom preference
  final Preference randomPref = (Preference) findPreference("randomPref");
  Preference randomDayPref = (Preference) findPreference("randomDayPref");
  Preference hourPref = (Preference) findPreference("hourPref");
  Preference maxRandomMessagePref = (Preference) findPreference("maxRandomMessagePref");
  Preference randomContactsPref = (Preference) findPreference("randomContactsPref");
  Preference sendSMSPref = (Preference) findPreference("sendSMSPref");
  Preference sendEmailPref = (Preference) findPreference("sendEmailPref");

  //Finished
  randomPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });

  //Finished
  randomDayPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });


  hourPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });


  maxRandomMessagePref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });


  randomContactsPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });


  sendSMSPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });

  sendEmailPref.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
    return true;
   }
  });
 }
}

И мой XML-файл

    <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen 
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <PreferenceCategory
                android:title="Randomization Properties">
                <CheckBoxPreference
                 android:title="Random Delays"
                 android:summary="Message"
                 android:defaultValue="false"
                 android:key="randomPref" /> 
                <CheckBoxPreference
                 android:title="Throughout The Day"
                 android:summary="Message"
                 android:defaultValue="false"
                 android:key="randomDayPref" />
             <ListPreference
                    android:title="Random Hourly Timings"
                    android:summary="Message"
                    android:key="hourPref"
                    android:defaultValue="6"
                    android:entries="@array/hours"
                    android:entryValues="@array/listValues"/> 
                <EditTextPreference
                 android:name="Messages"
                 android:summary="Message"
                 android:defaultValue="100"
                 android:title="Messages"
                 android:key="maxRandomMessagePref" />
        </PreferenceCategory>

        <PreferenceCategory
                android:title="Contacts">       
                <Preference
                 android:title="@string/contacts"
                 android:summary="Message"
                 android:key="randomContactsPref" /> 
        </PreferenceCategory>

        <PreferenceCategory
                android:title="Options">         
                <CheckBoxPreference
                 android:title="Send Through SMS"
                 android:summary="Send Messages As Normal"
                 android:defaultValue="false"
                 android:key="sendSMSPref" /> 
                <CheckBoxPreference
                 android:title="Send Trhrough E-Mail"
                 android:summary="Send Messages Through E-Mail Uses E-Mail Settings"
                 android:defaultValue="false"
                 android:key="sendEmailPref" />          
        </PreferenceCategory>
</PreferenceScreen>

из того, что я вижу в сети, мне может понадобиться создать onPrefernceChangeListener ()?я действительно в растерянности с этим, я знаю, что это должно быть просто, я просто не понимаю, как извлечь предпочтения из XML, когда пользователь изменяет их, а затем сохранить их, чтобы моя активность человека могла их читать и корректировать соответственно.Если кто-то, кто знает, что они делают, может указать мне правильное направление, это было бы здорово.

1 Ответ

0 голосов
/ 08 ноября 2010

Я не совсем уверен, что вы просите здесь, но я попытаюсь ответить.

Если вы не делаете ничего фантастического, вам не нужно переопределять какие-либо предпочтения setOnPreferenceClickListener s, если вы используете общие настройки по умолчанию.Базовый класс будет обрабатывать сохранение его для вас.

Чтобы получить доступ к этим настройкам из другого действия, вы сделаете что-то вроде этого:

SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
boolean savedValue = defaultSharedPreferences.getBoolean("randomPref", false);
...