Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么swtich会回到初始阶段?_Java_Android - Fatal编程技术网

Java 为什么swtich会回到初始阶段?

Java 为什么swtich会回到初始阶段?,java,android,Java,Android,我已经创建了一个开关,并且我正在将布尔值保存到共享引用,但是当我恢复活动时,开关返回到关闭,如果它被打开,我想保持它打开,如果它被关闭,保持它关闭 这是我的开关代码: buttonSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton c

我已经创建了一个
开关
,并且我正在将布尔值保存到
共享引用
,但是当我恢复活动时,开关返回到关闭,如果它被打开,我想保持它打开,如果它被关闭,保持它关闭

这是我的开关代码:

        buttonSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            if(isChecked){
                switched = "ON";
                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                editor.putBoolean("SWTCH", buttonSwitch.isChecked());
                editor.commit();
            }else{
                switched = "OFF";
                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                editor.putBoolean("SWTCH", buttonSwitch.isChecked());
                editor.commit();
            }
        }
    });
下面是
onCreate
SharedReferences:


您正在访问一个完全不同的共享首选项实例

"com.example.xyle"


请将它们更改为相等

您正在访问一个完全不同的共享首选项实例

"com.example.xyle"


请将它们更改为相等

在阅读和书写时使用相同的首选项名称。

您还可以将onCheckedChanged增强为:

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                switched = isChecked ? "ON":"OFF";
                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                editor.putBoolean("SWTCH", isChecked);
                editor.commit();
        }

在阅读和书写时使用相同的首选项名称。

您还可以将onCheckedChanged增强为:

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                switched = isChecked ? "ON":"OFF";
                SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
                editor.putBoolean("SWTCH", isChecked);
                editor.commit();
        }

太好了,我没有注意到这是个问题,我会在9分钟内接受你的回答。@i.Mytyuk没问题。可以考虑使用默认共享首选项。而不是私人的,除非有具体的原因。另外,
apply()
commit()
@I.Mytyuk更好,为了避免这种情况,尽量不要使用内联字符串,而是使用常量。@VladMatvienko是一个关于私人首选项路由的好建议。尽可能减少恢复字符串的打字错误。@VladMatvienko我当然会,我只是android新手,所以我还有很多东西要学。太好了,我没有注意到这是个问题,我会在9分钟内接受你的答案。@i.Mytyuk没问题。可以考虑使用默认共享首选项。而不是私人的,除非有具体的原因。另外,
apply()
commit()
@I.Mytyuk更好,为了避免这种情况,尽量不要使用内联字符串,而是使用常量。@VladMatvienko是一个关于私人首选项路由的好建议。尽可能减少重新生成的字符串的拼写错误。@VladMatvienko我当然会的,我只是android新手,所以我还有很多东西要学。