プリファレンスアクティビティがあり、リストプリファレンスが変更されたときにデフォルト値を設定しないことに気づきました。
プリファレンスには、これらの基本的なダイナミクスがあります
- チェックボックス=チェックされていない場合->プリファレンスエントリ値のリスト=x
- チェックボックス=チェックマークが付いている場合->プリファレンスエントリ値のリスト=z
アプリを最初に実行するとデフォルト値が設定されますが、チェックボックスをオンにすると、その後は値が適用されません。
コード:
public class QuickPrefsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
View title =(View)getWindow().findViewById(android.R.id.title);
FrameLayout titlebar=(FrameLayout)title.getParent();
TextView txt = (TextView)titlebar.getChildAt(0);
txt.setGravity(Gravity.CENTER);
CheckBoxPreference chckbox = (CheckBoxPreference)
findPreference("french");
if (chckbox.isChecked()) {
ListPreference newsPref = (ListPreference)
findPreference("news_feed");
newsPref.setEntryValues(getResources().
getStringArray(R.array.newsfeedfr));
newsPref.setDefaultValue(1);
} else {
ListPreference news2Pref = (ListPreference)
findPreference("news_feed");
news2Pref.setEntryValues(getResources().
getStringArray(R.array.newsfeed));
news2Pref.setDefaultValue(1);
}
}
}