Список предпочтений без радио

Я делаю экран настроек для своего приложения. На экране настроек у меня есть 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 за указатель.

Другие вопросы по тегам