1

在我的应用程序中,我只有一个使用复选框的基本设置,我希望它像扩展偏好活动时的偏好一样持续存在,除非不这样做。我能找到的所有偏好示例,扩展偏好活动。

是否可以在主 UI 中仅使用一个基本复选框来提供首选项功能,并为其提供逻辑?简短的例子将不胜感激。

4

3 回答 3

0

您可以使用SharedPreferences自己手动保存首选项。一旦复选框被更改,您就可以保存/加载设置

CheckBox checkBox = ( CheckBox ) findViewById( R.id.checkbox );
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            // get the preference manager
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

            // get the editor
            SharedPreferences.Editor editor = prefs.edit();

            // put the new setting
            editor.putBoolean(PREF_NAME, true);

            // IMPORTANT - save the new settings
            editor.commit();

         }  
      }
    }
});

然后,您可以在任何您喜欢使用的地方检索您的设置

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
if (prefs.getBoolean(PREF_NAME, false)) {
   // setting dependent code goes here
}

希望有帮助:)

于 2012-08-29T13:27:31.977 回答
0

您可以在任何活动中访问共享首选项...

SharedPreferences preferences = getSharedPreferences( NameAsString, Context.MODE_PRIVATE );
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean( keyAsString, value );
editor.apply();

请注意, editor.apply() 是异步的,仅在 GB 及以上版本中可用,对于低于 android 2.3 的版本使用 editor.commit()

于 2012-08-29T13:31:30.963 回答
0
CheckBox checkBox = (CheckBox) findViewById(R.id.checkbox1);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("checkbox_key", isChecked);
        editor.commit();
    }
});
于 2012-08-29T13:31:32.443 回答