Android列表首选项:有摘要作为选定的值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我有一个首选项活动,它使用我的XML文件定义的列表首选项。我如何将列表活动的摘要设置为所选的值?

提问于
用户回答回答于

你可以使用OnPreferenceChangeListener动态更改摘要。问题是它从android:entryValuesandroid:entries)中获取选定的值,而不是标题()。在我使用的以下代码中toString(),正确的解决方案是找到该值的标题:

public class Preferences extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.your_prefs);

        ListPreference listPreference = (ListPreference) findPreference("preference_key");
        if(listPreference.getValue()==null) {
            // to ensure we don't get a null value
            // set first value by default
            listPreference.setValueIndex(0);
        }
        listPreference.setSummary(listPreference.getValue().toString());
        listPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                preference.setSummary(newValue.toString());
                return true;
            }
        });
    }
}
用户回答回答于

最简单的方法就是让Android为你做。假设你想总结到选定值相匹配例如:

<ListPreference
    android:key="pref_list"
    android:title="A list of preferences"
    android:summary="%s"
    android:entries="@array/pref_list_entries"
    android:entryValues="@array/pref_list_entries_values"
    android:defaultValue="0" />

扫码关注云+社区