没有收音机的ListPreference

时间:2014-01-27 19:44:39

标签: android android-preferences dialog-preference

我正在为我的应用制作首选项屏幕。在首选项屏幕中,我有一个关于应用程序的“传播单词”的ListPreference。但是,我不希望那里有单选按钮。我希望整个对话框看起来好像是用户可以做的事情列表,用户可以从菜单中选择一个将要执行的选项。我该怎么做?我是Android新手,来自iOS背景。

提前致谢!

enter image description here

我在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 个答案:

答案 0 :(得分:2)

在XML中将首选项指定为Preference时,首选项就像任何按钮一样,而不是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指针。