如何在 android 中保存开关(按钮)的状态

how to save the state of switch(button) in android

我在我的 android 应用程序中使用 switch(例如 android togglebutton)而不是普通按钮。该代码在启用和禁用开关时工作正常。但我想存储开关的状态。假设我启用开关并关闭我的应用程序,后台代码将 运行 正常,但开关状态将更改为禁用。

每次我关闭应用程序时,开关状态都会变为禁用状态。有没有办法存储开关状态?

mySwitch.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
    if (mySwitch.isChecked()) {
        SharedPreferences.Editor editor = getSharedPreferences ("com.mobileapp.smartapplocker",
        MODE_PRIVATE).edit();
        editor.putBoolean("Service On", true);
        editor.commit();
    }

    else {
        SharedPreferences.Editor editor = getSharedPreferences ("com.mobileapp.smartapplocker",
        MODE_PRIVATE).edit();
        editor.putBoolean("Service Off", false);
        editor.commit();
    }
  }
}

我认为您对共享首选项在 android 中的工作方式感到困惑。它们基本上是键值对。因此,为了检索特定值,密钥必须相同。

下面举个例子:

    mySwitch.setOnClickListener(new View.OnClickListener() {

       @Override
       public void onClick(View arg0) {    
           SharedPreferences.Editor editor = getSharedPreferences("com.mobileapp.smartapplocker", MODE_PRIVATE).edit();
           editor.putBoolean("service_status", mySwitch.isChecked());
           editor.commit();
       }
   }

现在你在哪里检查服务

  SharedPreferences prefs = getSharedPreferences("com.mobileapp.smartapplocker", MODE_PRIVATE);
  boolean switchState = pref.getBoolean("service_status", false);

  if(switchState){
        //Do your work for service is selected on
  } else {
        //Code for service off
  }

希望对你有帮助