Извлечь предпочтение из макета предпочтений XML
Итак, я работаю над этим некоторое время, я знаю, что это должно быть проще, чем я делаю это, но я пытаюсь сделать это, у меня есть мой макет предпочтений 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 ответ
Я не совсем уверен, что вы просите здесь, но я постараюсь ответить.
Если вы не делаете ничего необычного, вам не нужно отменять какие-либо предпочтения. setOnPreferenceClickListener
s, если вы используете общие настройки по умолчанию. Базовый класс будет обрабатывать сохранение его для вас.
Чтобы получить доступ к этим настройкам из другого действия, вы должны сделать что-то вроде этого:
SharedPreferences defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
boolean savedValue = defaultSharedPreferences.getBoolean("randomPref", false);