【问题标题】:sharedpreferences don't read button statesharedpreferences 不读取按钮状态
【发布时间】:2013-01-07 12:04:26
【问题描述】:

当应用程序被杀死并通过SharedPreferences 重新启动时,我正在尝试保存切换按钮的状态。

我可以在 /data/data/myapp/shared_prefs 上看到值 true/false 的 xml 已写入,但我坚持让代码在每次我杀死并重新启动应用程序时读取首选项。

按钮只是重置为默认状态,在我的例子中是真的。就我而言,我在一个片段上运行它;所以我不得不使用:

final SharedPreferences preferences = this.getActivity().getSharedPreferences("tg1pref",0);

这是我的代码:

boolean on;
public SharedPreferences preferences;

final ToggleButton toggleButton1 = (ToggleButton) v.findViewById(R.id.toggleButton1);

    final SharedPreferences preferences = this.getActivity().getSharedPreferences("tg1pref",0);
    boolean tg1pref = preferences.getBoolean("tg1pref", true);
    if (tg1pref = true) {
        toggleButton1.setChecked(true);
    } else {
        toggleButton1.setChecked(false);
    }

    toggleButton1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        if((toggleButton1.isChecked())) {
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putBoolean("tg1pref", true); // value to store
                    editor.commit(); 
        } else {
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putBoolean("tg1pref", false); // value to store
                    editor.commit();
            }
        }
    });

感谢您的帮助!

用 t0mm13b 方法解决:

    if (tg1pref = true) {

//That should be:

    if (tglpref){ // Meaning and same as if (tglpref == true)

【问题讨论】:

  • 你可能想使用 editor.apply() 而不是 edit it.commit()。

标签: android eclipse onclick sharedpreferences togglebutton


【解决方案1】:

这一行:

if (tg1pref = true) {

应该是:

if (tglpref){ // Meaning and same as if (tglpref == true)

里面有错别字!

【讨论】:

  • 就可以了。 = 是一个赋值 == 是一个比较。
猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多