更改Android Switch状态

我目前正在开发一个具有菜单的应用程序,菜单上的一个选项是“设置”,用户基本上可以决定关闭声音和其他类似的东西.我目前在“设置”活动中有两个开关.到目前为止,这是Settings活动的 java代码
import android.support.v7.app.ActionBaractivity;


public class Options extends ActionBaractivity {
private  Switch ding;
private Switch countdown;
public  boolean isDingChecked;
public  boolean isCountdownChecked;
public static final String PREFS = "examplePrefs";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_options);
ding = (Switch) findViewById(R.id.switch1);
ding.setonCheckedchangelistener(new OnCheckedchangelistener() {
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

        SharedPreferences examplePrefs = getSharedPreferences(PREFS,0);
        Editor editor = examplePrefs.edit();
        editor.putBoolean("userMessage",isChecked);
        editor.commit();

        //System.out.println(examplePrefs.getBoolean("userMessage",isChecked));
        isDingChecked = examplePrefs.getBoolean("userMessage",isChecked);
        System.out.println(isDingChecked + " is ding checked");
        ding.setChecked(isDingChecked);
    }
});

countdown = (Switch) findViewById(R.id.switch2);
countdown.setonCheckedchangelistener(new OnCheckedchangelistener() {
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
        // do something,the isChecked will be
        // true if the switch is in the On position
        isCountdownChecked = isChecked;

    }
});     
 }
 }

我可以在我的其他活动中使用布尔值,因此SharedPreference工作正常.但是,当我返回到菜单活动并返回到此选项活动时,无论用户声明什么,开关的状态都会恢复为认值true.无论如何我可以解决这个问题吗?

ding.setChecked(isDingChecked)

我猜不是真的做了什么.我知道我过去发过一个类似的问题,只是一个人没有太多的活动,我已经在这个问题上工作了很长一段时间.谢谢!

解决方法

尝试这样的事情:
@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_options);
    ding = (Switch) findViewById(R.id.switch1);

    //grab prefs first
    final SharedPreferences examplePrefs = getSharedPreferences(PREFS,0);
    final Editor editor = examplePrefs.edit();
    ding.setChecked(examplePrefs.getBoolean("your_key",false)); //false default 


    ding.setonCheckedchangelistener(new OnCheckedchangelistener() {
        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

            //commit prefs on change
            editor.putBoolean("your_key",isChecked);
            editor.commit();

            System.out.println(isDingChecked + " is ding checked");
        }
    });

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...