根据选中的状态更改CheckBoxPreference摘要

时间:2012-07-31 11:37:55

标签: android checkbox android-preferences checked

我正在尝试创建一个应用,其中首选项摘要会根据CheckBoxPreference的已检查状态进行更改。

我不太确定如何查询偏好设置,因为好的旧isChecked()无效。

2 个答案:

答案 0 :(得分:17)

如果您在偏好设置中使用了android:summaryOffandroid:summaryOn,那会简单得多。无需代码。 E.g:

<CheckBoxPreference
        android:enabled="true"
        android:key="alerts"
        android:title="Alerts" 

        android:summaryOn="You will get notified when something interesting happens"
        android:summaryOff="You will not be notified"
        /> 

请参阅:http://developer.android.com/reference/android/preference/CheckBoxPreference.html

答案 1 :(得分:1)

public class Preferences extends PreferenceActivity
        implements OnSharedPreferenceChangeListener {

    public final static String KEY_CHECK = "check";
    private CheckBoxPreference mCheckBoxPreference;

    @Override
    public void onCreate(Bundle savedInstance) {
        super.onCreate(savedInstance);
        addPreferencesFromResource(R.xml.preferences);
        mCheckBoxPreference = (CheckBoxPreference) getPreferenceScreen()
            .findPreference(KEY_CHECK);
    }

    @Override
    protected void onResume() {
        super.onResume();
        getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        if (key.equals(KEY_CHECK)) {
            if (mCheckPreference.isChecked()) {
                mCheckPreference.setSummary(mCheckPreference.getEntry());
            }
        }
    }
}