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

Sam*_*Sam 0 service android state switch-statement

我在我的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();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 6

我认为你对共享偏好如何在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();
       }
   }
Run Code Online (Sandbox Code Playgroud)

现在你在哪里检查服务

  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
  }
Run Code Online (Sandbox Code Playgroud)

希望有所帮助