如何在 android 中保存(切换)按钮状态?
How to save (switch) button state in android?
我在我的 andorid 应用程序中使用 SWITCH(如 android 切换按钮)而不是普通按钮。
该代码在启用和禁用开关时工作正常。
但我想存储开关的状态。
假设我启用开关并关闭我的应用程序,后台代码将 运行 正常,但开关状态将更改为禁用。
每次我关闭应用程序时,开关状态都会变为禁用状态。
有什么方法可以存储开关状态吗??
使用共享首选项或数据库来存储您的开关状态。您必须依赖 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 中获取共享首选项值是一种不好的做法,最好制作一个加载器 class,它可以在单独的线程中预先初始化您的应用程序变量.
更新:7 月 24 日,星期三; 2019 年:
Android 现在支持视图模型 - 这可用于处理开关状态并在会话或配置更改中保持它。
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`
}
我在我的 andorid 应用程序中使用 SWITCH(如 android 切换按钮)而不是普通按钮。 该代码在启用和禁用开关时工作正常。 但我想存储开关的状态。 假设我启用开关并关闭我的应用程序,后台代码将 运行 正常,但开关状态将更改为禁用。
每次我关闭应用程序时,开关状态都会变为禁用状态。 有什么方法可以存储开关状态吗??
使用共享首选项或数据库来存储您的开关状态。您必须依赖 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 中获取共享首选项值是一种不好的做法,最好制作一个加载器 class,它可以在单独的线程中预先初始化您的应用程序变量.
更新:7 月 24 日,星期三; 2019 年:
Android 现在支持视图模型 - 这可用于处理开关状态并在会话或配置更改中保持它。
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`
}