チェックボックスの設定に関するチュートリアルが見つかりません。リスト設定は使用できますが、チェックボックス設定は使用できません。今のところ、ユーザーがchecboxを設定すると、トーストメッセージは「true」と表示され、オフに設定するとトーストメッセージは「false」と表示されます。これまでのところ私はこれを持っています:
preferences.xml:
<CheckBoxPreference
Android:title="Show Call UI"
Android:defaultValue="true"
Android:summary="Show Call Interface when clicking call button"
Android:key="checkboxPref" />
EditPreferences.Java:
public class EditPreferences extends PreferenceActivity {
String listPreference;
boolean checkboxPreference;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
public void onStart(Intent intent, int startId) {
getPrefs();
}
private void getPrefs() {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
listPreference = prefs.getString("listPref", "nr1");
checkboxPreference = prefs.getBoolean("checkboxPref", true);
}
}
編集:David Cauntのおかげで解決策:
checkboxPreference.
setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue.toString().equals("true")) {
Toast.makeText(getApplicationContext(), "CB: " + "true",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "CB: " + "false",
Toast.LENGTH_SHORT).show();
}
return true;
}
});
OnCreateメソッドのPreferenceにリスナーを追加する必要があります
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.d("MyApp", "Pref " + preference.getKey() + " changed to " + newValue.toString());
return true;
}
});
チェックボックスの値をブール値にキャストできます。これは、toString()値をチェックするよりも安全で拡張性が高い場合があります。
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
if(newValue instanceof Boolean){
Boolean boolVal = (Boolean)newValue;
}
return true;
}
});