Android首选项如何使用switch语句

时间:2016-06-29 08:28:27

标签: android switch-statement android-preferences onpreferenceclicklistener

我的偏好设置屏幕中有一些偏好设置:

<PreferenceCategory
    android:key="category"
    android:summary="Category"
    android:title="Category">

    <Preference
        android:key="pref1"
        android:summary="desc"
        android:title="Pref 1" />

    <Preference
        android:key="pref2"
        android:summary="desc"
        android:title="Pref 2" />

</PreferenceCategory>

PreferenceActivity中找到它们:

Preference pref1, pref2;

@Override
    protected void onCreate(final Bundle savedInstanceState) {
      pref1 = findPreference("pref1");
      pref2 = findPreference("pref2");
}

并为他们设置一些OnPreferenceClickListener。如何正确定义单击了哪个首选项?我想用case-switch风格来做,但我不知道应该使用哪种类型:

Preference.OnPreferenceClickListener listener = new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        switch (???){       //I guess, here goes the "preference"?
            case ???:       //getting error with pref1 or pref2

        }
        return false;
    }
}

如果我将preference中的onPreferenceClick放在switch()中,我将会case收到错误。

2 个答案:

答案 0 :(得分:2)

您可以获得相应的偏好,例如

@Override
public boolean onPreferenceClick (Preference preference)
{
    String key = preference.getKey();
    // do what ever you want with this key
}

参考:Preference Activity on Preference Click Listener

希望这有助于:)

答案 1 :(得分:1)

您可以使用首选项的setCurrentItem(position)字段

key