我在我的andorid应用程序中使用SWITCH(如android切换按钮)而不是普通按钮。 启用和禁用交换机时,代码工作正常。 但我想存储开关的状态。 假设我启用了交换机并关闭了我的应用程序,后台代码将正常运行,但交换机状态将变为禁用。
每次关闭应用程序时,开关状态都会被禁用。 有没有办法存储开关状态??
答案 0 :(得分:12)
使用共享首选项或数据库来存储交换机的状态。您必须依赖Activity / fragment的生命周期方法。
以下内容可能会对您有所帮助:
@Override
public void onClick(View v)
{
if (toggle.isChecked())
{
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", true);
editor.commit();
}
else
{
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", false);
editor.commit();
}
}
最后的指甲:
@Override
protected void onCreate(Bundle savedInstanceState)
{
SharedPreferences sharedPrefs = getSharedPreferences("com.example.xyle", MODE_PRIVATE);
toggle.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
}
上面的代码正在运行,但是我认为在onCreate中获取共享首选项值是一种不好的做法,最好是在一个单独的线程中创建一个能够很好地将app变量插入到app变量中的加载器类。
答案 1 :(得分:0)
SharedPreferences pref = getSharedPreferences("save",MODE_PRIVATE);
unit.setChecked(pref.getBoolean("first", false));
if(isChecked) {
SharedPreferences.Editor editor = getSharedPreferences("save"MODE_PRIVATE).edit();
editor.putBoolean("first", true);
editor.apply();
unit.setChecked(true);}
else
{
SharedPreferences.Editor editor = getSharedPreferences("save",MODE_PRIVATE).edit();
editor.putBoolean("first",false);
editor.apply();
kilometer.setText("Km/h");
unit.setChecked(false);`enter code here`
}