动态更改列表首选项值

时间:2013-02-27 22:53:14

标签: android listpreference

我正在尝试创建一个选项菜单,用户可以在其中选择省份,然后理想情况下,选择该省的城市。但是,当省更改时,我无法让我的城市列表动态更改,它始终保持我给出的默认值。以下是目前为止偏好类的代码:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener{
 String[] sk_cities;
CharSequence[] sk_values;
String[] ab_cities;
CharSequence[] ab_values;
String[] bc_cities;
CharSequence[] bc_values;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.layout.preferences);
    sk_cities = getResources().getStringArray(R.array.sk_cities);
    sk_values = getResources().getStringArray(R.array.sk_cities_value);
    ab_cities = getResources().getStringArray(R.array.ab_cities);
    ab_values = getResources().getStringArray(R.array.ab_cities_value);
    bc_cities = getResources().getStringArray(R.array.bc_cities);
    bc_values = getResources().getStringArray(R.array.bc_cities_value);
}



public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    ListPreference listPref = (ListPreference)findPreference("City");

    if (key.equals("Provinces")) {
    String value = sharedPreferences.getString(key, "Provinces");
        if (value.equals("Saskatchewan")){
            listPref.setEntries(sk_cities);
            listPref.setEntryValues(sk_values);
        }else if (value.equals("Alberta")){
        listPref.setEntries(ab_cities);
        listPref.setEntryValues(ab_values);
        }
        else if (value == "British Columbia"){
            listPref.setEntries(bc_cities);
            listPref.setEntryValues(bc_values);
        }
        else{
            listPref.setEntries(sk_cities);
            listPref.setEntryValues(sk_values);
        }

引用的每个数组都只是我在XML文件中创建的基本字符串数组。谁能告诉我这里我做错了什么?谢谢!

0 个答案:

没有答案