我正在为我的应用制作首选项屏幕。在首选项屏幕中,我有一个关于应用程序的“传播单词”的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);
}
}
答案 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指针。