我正在尝试创建一个选项菜单,用户可以在其中选择省份,然后理想情况下,选择该省的城市。但是,当省更改时,我无法让我的城市列表动态更改,它始终保持我给出的默认值。以下是目前为止偏好类的代码:
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文件中创建的基本字符串数组。谁能告诉我这里我做错了什么?谢谢!