for_2012 2013-01-24 03:35 采纳率: 0%
浏览 3052
已采纳

sharedpreference无法读取按钮状态

我需要在应用kill的时候保存按钮状态,通过sharedpreference。

/data/data/myapp/shared_prefs这里可以看见按钮值true/false已经被写入了。但是在应用kill的时候读取状态出现问题。

按钮每次重启都会进入默认状态true,我在一个fragment中运行的,因此我用了:

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();
            }
        }
    });
  • 写回答

1条回答 默认 最新

  • Billy_崔海斌 2013-01-24 07:13
    关注

    this.getActivity()会可能返回null,所以你不能这样做。

    你需要放在onAttach(Activity activity)里面进行preferences的初始化。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器