如何在android中保存(切换)按钮状态?

2023-11-21

我在我的 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));
}

Edit:

上面的代码可以工作,但是我觉得在 onCreate 中获取共享首选项值是一个不好的做法,最好创建一个加载器类,预先在单独的线程中初始化您的应用程序变量。

更新:7 月 24 日星期三; 2019:

Android 现在具有视图模型支持 - 这可用于处理切换状态并在会话或配置更改之间保留它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在android中保存(切换)按钮状态? 的相关文章

随机推荐

  • JSON-RPC Swagger 组合

    我正在考虑为我的 Web 服务实现 JSON RPC这个图书馆 我也想实施Swagger为我服务 但是 我不确定这两者是否是一个很好的组合 在 JSON RPC 中 所有方法都位于同一资源后面 而这在 Swagger 中没有任何意义 我想知
  • 使用 Jackson 模块和 ScalaObjectMapper 在 Spark 1.4.0 上运行作业时出错

    我正在运行一个用 Scala 2 10 4 编写的 Spark 作业 并在 Spark 1 4 0 集群上运行 基于 HDFS 并使用 YARN 进行管理 并在 Maven 存储库上使用 Jackson 模块版本 2 6 1 当从我的 ID
  • 运行 Python 3.5 解释器需要哪些标准库模块?

    这是一个 CPython 程序 它尝试用空的初始化解释器sys path include
  • 确定 UIImage 的主要颜色和次要颜色

    我想知道是否有人可以帮助我弄清楚如何确定 UIImage 中的主要原色和次要颜色 我在谷歌中找不到任何非常有用的东西 基于上面的 Panic 博客 这里有一个快速方法 接受 UIImage 输入和输出 背景色 原色 次要颜色 将 UIIma
  • 将数据框行转换为列名称

    有没有快速的方法 部分tidyverse也许是 API 将行转换为列名data frame or tibble 有点类似于tibble column to rownames 我意识到有很多方法可以做到这一点 例如有点笨拙 gt df lt
  • 如何获取Assets文件夹中文件的android路径字符串?

    我需要知道字符串路径到资产文件夹中的文件 因为我使用的地图 API 需要接收字符串路径 并且我的地图必须存储在资产文件夹中 这是我正在尝试的代码 MapView mapView new MapView this mapView setCli
  • Jquery 选择器的逻辑 AND

    我想设置为检查按值和名称输入的复选框
  • 如何重用matplotlib.Axes.hist的返回值?

    假设我想绘制两次相同数据的直方图 import matplotlib pyplot as plt fig plt figure figsize 8 6 ax1 ax2 fig subplots nrows 2 ncols 1 ax1 his
  • Flutter:如何将拇指图像添加到滑块?

    我尝试将图像添加到滑块拇指 但我不知道它应该如何工作 在SliderThemeData我们没有用于添加缩略图的参数 我已经绑定使用SliderComponentShape用于绘制拇指 但它不起作用 class TimeReportTextF
  • Django - makemigrations - 未检测到任何更改

    我试图使用 makemigrations 命令在现有应用程序中创建迁移 但它输出 未检测到更改 通常我使用以下方式创建新应用程序startapp命令 但在我创建该应用程序时并未将其用于此应用程序 经过调试 我发现它没有创建迁移 因为migr
  • 名称为“mainController”的控制器未注册

    我的 script js 文件中有这段代码 var mainController function scope scope message Plunker 这是我的 HTML
  • 如何在cmake中添加库路径?

    我的项目中有 2 个文件夹 inc 和 lib 分别具有标头和静态库 我如何告诉 cmake 分别使用这两个目录进行包含和链接 最简单的方法是添加 include directories CMAKE SOURCE DIR inc link
  • Cassandra 提交日志澄清

    我已经阅读了有关 Cassandra 提交日志的多个文档 对我来说 有关此 结构 的信息存在冲突 该图显示 当发生写入时 Cassandra 会写入内存表和提交日志 令人困惑的部分是该提交日志所在的位置 我反复看到的图表显示了磁盘上的提交日
  • 需要 git rebase -Ignore-all-space 来保留我的空间

    我正在做一个重大更改的变基 其中有很多空白更改 为了使合并能够正常工作 我需要 Xignore all space 根据 git help rebase 忽略空间更改 忽略所有空间 忽略 eol 处的空间 为了三向合并 将具有指定类型的空白
  • Java 将 int 转换为 hex 并再次转换回来

    我有以下代码 int Val 32768 String Hex Integer toHexString Val 这相当于ffff8000 int FirstAttempt Integer parseInt Hex 16 Error Inva
  • 获取堆栈中上一层函数的 __file__

    我发现我经常使用这种模式 os path join os path dirname file file path 所以我决定在一个包含许多这样的小实用程序的文件中放入一个函数 def filepath in cwd file path re
  • 防止列表视图丢失所选项目

    我目前正在 winform c 中的列表视图上工作 每次我点击列表视图上的空白区域时 所选项目丢失 列表视图控件有一个HideSelection默认为的属性True 做了False就可以开始了 在某些情况下这就足够了
  • 将class文件转换为dex文件

    android中如何将class文件转换为dex文件 有什么办法吗 使用 dex 选项调用 dx 命令 如下所示 dx dex output
  • 将新的 subversion 远程添加到现有的 Git 存储库中

    我有一个完全跟踪远程 SVN 存储库的 git 存储库 现在我需要添加一个新分支 该分支将跟踪完全不同的 SVN 存储库中的目录 那可能吗 It is git svn init只编辑默认的 svn 远程 你必须编辑配置文件 Look in
  • 如何在android中保存(切换)按钮状态?

    我在我的 andorid 应用程序中使用 SWITCH 如 android 切换按钮 而不是普通按钮 该代码在启用和禁用开关时工作正常 但我想存储开关的状态 假设我启用开关并关闭我的应用程序 后台代码将正常运行 但开关状态将更改为禁用 每次