web-dev-qa-db-ja.com

Androidチェックボックス設定

チェックボックスの設定に関するチュートリアルが見つかりません。リスト設定は使用できますが、チェックボックス設定は使用できません。今のところ、ユーザーが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;
    }
});
27
erdomester

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;
        }
    }); 
48

チェックボックスの値をブール値にキャストできます。これは、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;
    }
}); 
14
Xample