我在我的应用程序中实现了一个切换开关,如下所示:
mySwitch = (Switch) findViewById(R.id.mySwitch);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
//some shell command
}
else {
//some shell command
}
}
});
切换功能正常但应用无法阅读"当它被加载时的当前状态......并且因此总是显示按钮是"关闭"即使它之前被触发过。我需要一种方法让按钮检查内核上的值并根据它反映状态。
我尝试了这个,但它不起作用:
//Switch check
List<String> stdout = Shell.SU.run("cat " + Files.DT2W_PATH);
for (String s : stdout) {
if (Integer.valueOf(s) == 0)
continue;
mySwitch.setChecked(false);
}
我只是需要它来读取SD卡上的文件值...如果值为0则将按钮显示为关闭...如果其为1然后将其显示为打开 请指教......
答案 0 :(得分:1)
您可以在共享偏好设置中的setOnCheckedChangeListener()
内保存切换按钮的状态。每当您第二次加载活动时,您可以使用oncreate()
方法中的共享首选项值来设置切换按钮的状态。
答案 1 :(得分:0)
将它放在setOnCheckedChangedListener()之后:
if(mySwitch.isChecked()){
// Do something
} else{
// Do something
}
答案 2 :(得分:0)
您的切换始终处于关闭状态,因为您在触发和打开状态时未存储其状态,但是当您离开应用程序时,其状态将丢失并且默认情况下处于关闭状态会将状态保存在共享优先级或您喜欢的任何位置以及应用程序时开始检查以前它是打开还是关闭并根据
分配它