Список предпочтений без радио
Я делаю экран настроек для своего приложения. На экране настроек у меня есть ListPreference, чтобы "Распространить слово" о приложении. Однако я не хочу, чтобы там были переключатели. Я хочу, чтобы весь диалог выглядел так, как будто это список того, что пользователь может сделать, и пользователь выберет один пункт из меню, которое будет выполнено. Как мне это сделать? Я новичок в Android, из iOS.
Заранее спасибо!
У меня есть это в моем pref_settings.xml.
<PreferenceCategory
android:key="pref_key_tell_friends"
android:title="@string/pref_header_tell_friends" >
<ListPreference
android:entries="@array/spread_the_word"
android:entryValues="@array/spread_the_word"
android:key="pref_key_spread"
android:title="@string/pref_title_spread" />
</PreferenceCategory>
и этот фрагмент я загружаю в своей деятельности -
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_settings);
}
}
1 ответ
Предпочтение работает так же, как любая кнопка, если она указана как Preference
в XML, а не ListPreference
или любой другой тип. Итак, я просто добавил слушателя к предпочтению и открыл AlertDialog
в слушателе. Вот код -
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.pref_settings);
Preference myPref = (Preference) findPreference("pref_key_spread");
myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
createListPreferenceDialog();
return false;
}
});
}
private void createListPreferenceDialog() {
Dialog dialog;
final String[] str = getResources().getStringArray(R.array.spread_the_word);
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
b.setTitle("Spread the Word");
b.setItems(str, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position){
Log.I(“Clicked the AlertDialog", + str[position]);
}
});
dialog = b.create();
dialog.show();
}
}
А вот и измененный XML -
<PreferenceCategory
android:key="pref_key_tell_friends"
android:title="@string/pref_header_tell_friends" >
<Preference
android:key="pref_key_spread"
android:title="@string/pref_title_spread" />
</PreferenceCategory>
Спасибо @njzk2 за указатель.