问题标签 [android-jetpack-datastore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 无法导入 androidx.datastore.dataStore(尝试重新创建 Google Codelab 示例)
问题:
我正在尝试重新创建此 codelab 教程项目https://developer.android.com/codelabs/android-proto-datastore,但 Android Studio 无法导入androidx.datastore.dataStore
脚步:
使用空的 Activity 创建新的 Kotlin 项目
修改gradle文件
切换到 Android Studio 的项目视图
在 app/src/main 中创建一个名为proto的文件夹
在 app/src/main/ proto中创建和修改文件user_prefs.proto
构建 -> 清理项目 -> 重建项目
创建一个名为UserPreferencesSerializer的序列化程序类
尝试将以下代码添加到空 MainActivity.kt
private const val DATA_STORE_FILE_NAME = "user_prefs.pb"
private val Context.userPreferencesStore: DataStore by dataStore(fileName = DATA_STORE_FILE_NAME, serializer = UserPreferencesSerializer)
在这一步之后,Android Studio 会标记dataStore并显示警告“ Unresolved reference: dataStore ”我也无法导入 androidx.datastore.dataStore,但我在我的 gradle 文件中找不到丢失的导入。请问,有人能告诉我如何解决这个问题吗?
代码:
构建.gradle
user_prefs.proto
UserPreferencesSerializer
MainActivity.kt
android - IllegalStateException:CompositionLocal LocalConfiguration 不存在 Android
根据Medium 上的这篇文章,我正在尝试staticCompositionLocalOf
在 Jetpack Compose中使用。这是我的 ProvidableCompositionLocal
这是 Compose 类提供的普通 Colors 类的包装。材质变量是普通的 Colors 类。
我还在我的主题功能中提供了它,如下所示。我darkTheme
从 Android DataStore获取
但是,我收到以下错误,但找不到任何可以帮助我修复它的在线资源。如果需要任何进一步的信息,我很乐意澄清。任何帮助将不胜感激。
android - 如何通过点击Fragment中的菜单项来设置和更新工具栏中的标题?
我需要设置所选类别的名称,下面是我通过单击调用的类别对象代码和方法。感谢您的帮助。
类别项目对象:
在菜单中:
ViewModel 中的 onChooseCategoryClick():
在偏好管理器中:
android - 为什么我的 Fragment 始终只从 jetPack dataStore 获取默认值,即使它(值)已经更改?
为什么每次我打开 Fragment 时,switchButton 始终位于默认的 nativeToForeign 值的位置(始终是默认赋值给 dataStore 中的 nativToForeign 变量的值)(带有相应的文本),尽管当我单击 switchButton 时,在 dataStore 日志中我看到更改是否成功?
数据存储:
分段:
视图模型:
android - 如何使存储在 dataStore 中的值影响应用程序的当前语言?
我有 2 个主要字符串文件的副本 - 俄语和英语本地化。我想通过在 Fragment 的弹出菜单中切换它们来更改应用程序语言。该菜单确实已经更改了 dataStore 中的“NativeLanguage”变量,它决定了我的应用程序中的几件事,包括 UI 语言(但不仅限于)。
谁能给我一些建议如何将所选的本地化数据保存在 dataStore 中并根据此存储的数据设置所有 UI 文本?感谢任何帮助
在片段中:
在视图模型中:
在数据存储中:
android - 是否可以在没有流的情况下从 DataStore 读取/写入原始类型?
是否可以从 a 中读取/写入原始类型DataStore
?例如,我只想阅读一个Int
. 我不希望有任何Flow
缠绕它。很简单Int
。
android - 如何仅一次立即获得 Flow 的价值?
我已经创建了我的DataStore
并且我有一个布尔值:
现在,BroadcastReceiver
我需要检查这个值。根据值,我需要执行数据库操作:
在我的应用程序的某个地方,我设置didRebootFlow
为true
. 但是我的广播正在打印false
(在第二次尝试中它工作正常)。
我是挂起函数的新手,Flow
无法弄清楚如何使我的代码工作。
我的代码逻辑强烈依赖于该字段的值。如何在didRebootFlow
这里(并立即)到达一次?
我不想使用.collect { }
,因为我不想didRebootFlow
连续“观察”。我只想得到它的价值一次。(因为didRebootFlow
不停地观察意味着我会做很多数据库操作)。
android - 从 JetPack Proto DataStore 读取值
我正在使用 JetPack DataStore,因为我需要持久对象和原始类型。但我在从我的 protoDataStore 读取值时遇到问题。使用文档中的阅读方法(https://developer.android.com/topic/libraries/architecture/datastore#kotlin)。我总是在 protobuf 中获得存储数据的流。有没有办法返回一个 Int 值?例如:
有没有办法将 exampleCounter 存储在 Int 引用中?
提前致谢!
编辑:换句话说,我想重建存储的对象。
java - Java 中的 DataStore Android 示例
需要在 java 中为我的 android 项目实现 DataStore。我正在关注此文档: https ://developer.android.com/topic/libraries/architecture/datastore?hl=pt-br#java 但无法正常工作。我只能在 Kotlin 中找到示例。有人可以向我展示一个在 java 中使用 DataStore Preferences 的简单示例吗?谢谢!!!