问题标签 [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.

0 投票
2 回答
851 浏览

kotlin - 无法导入 androidx.datastore.dataStore(尝试重新创建 Google Codelab 示例)

问题:

我正在尝试重新创建此 codelab 教程项目https://developer.android.com/codelabs/android-proto-datastore,但 Android Studio 无法导入androidx.datastore.dataStore

脚步:

  1. 使用空的 Activity 创建新的 Kotlin 项目

  2. 修改gradle文件

  3. 切换到 Android Studio 的项目视图

  4. 在 app/src/main 中创建一个名为proto的文件夹

  5. 在 app/src/main/ proto中创建和修改文件user_prefs.proto

  6. 构建 -> 清理项目 -> 重建项目

  7. 创建一个名为UserPreferencesSerializer的序列化程序类

  8. 尝试将以下代码添加到空 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

0 投票
1 回答
563 浏览

android - IllegalStateException:CompositionLocal LocalConfiguration 不存在 Android

根据Medium 上的这篇文章,我正在尝试staticCompositionLocalOf在 Jetpack Compose中使用。这是我的 ProvidableCompositionLocal

这是 Compose 类提供的普通 Colors 类的包装。材质变量是普通的 Colors 类。

我还在我的主题功能中提供了它,如下所示。我darkTheme从 Android DataStore获取

但是,我收到以下错误,但找不到任何可以帮助我修复它的在线资源。如果需要任何进一步的信息,我很乐意澄清。任何帮助将不胜感激。

0 投票
1 回答
33 浏览

android - 如何通过点击Fragment中的菜单项来设置和更新工具栏中的标题?

我需要设置所选类别的名称,下面是我通过单击调用的类别对象代码和方法。感谢您的帮助。

类别项目对象:

在菜单中:

ViewModel 中的 onChooseCategoryClick():

在偏好管理器中:

0 投票
1 回答
178 浏览

android - 为什么我的 Fragment 始终只从 jetPack dataStore 获取默认值,即使它(值)已经更改?

为什么每次我打开 Fragment 时,switchButton 始终位于默认的 nativeToForeign 值的位置(始终是默认赋值给 dataStore 中的 nativToForeign 变量的值)(带有相应的文本),尽管当我单击 switchButton 时,在 dataStore 日志中我看到更改是否成功?

数据存储:

分段:

视图模型:

0 投票
0 回答
64 浏览

android - 如何使存储在 dataStore 中的值影响应用程序的当前语言?

我有 2 个主要字符串文件的副本 - 俄语和英语本地化。我想通过在 Fragment 的弹出菜单中切换它们来更改应用程序语言。该菜单确实已经更改了 dataStore 中的“NativeLanguage”变量,它决定了我的应用程序中的几件事,包括 UI 语言(但不仅限于)。

谁能给我一些建议如何将所选的本地化数据保存在 dataStore 中并根据此存储的数据设置所有 UI 文本?感谢任何帮助

在片段中:

在视图模型中:

在数据存储中:

0 投票
1 回答
110 浏览

android - 是否可以在没有流的情况下从 DataStore 读取/写入原始类型?

是否可以从 a 中读取/写入原始类型DataStore?例如,我只想阅读一个Int. 我不希望有任何Flow缠绕它。很简单Int

0 投票
0 回答
317 浏览

android - 如何仅一次立即获得 Flow 的价值?

我已经创建了我的DataStore并且我有一个布尔值:

现在,BroadcastReceiver我需要检查这个值。根据值,我需要执行数据库操作:

在我的应用程序的某个地方,我设置didRebootFlowtrue. 但是我的广播正在打印false(在第二次尝试中它工作正常)。

我是挂起函数的新手,Flow无法弄清楚如何使我的代码工作。

我的代码逻辑强烈依赖于该字段的值。如何在didRebootFlow这里(并立即)到达一次?

我不想使用.collect { },因为我不想didRebootFlow连续“观察”。我只想得到它的价值一次。(因为didRebootFlow不停地观察意味着我会做很多数据库操作)。

0 投票
0 回答
96 浏览

android-jetpack-navigation - Jetpack Compose - 我如何编程这个可组合来访问“列表”中的“url”

//我在尝试获取 KbfPlayScreen.kt 中的标题文本以在单击按钮时访问 Data.kt 中列表中的“url”时遇到问题。


播放网址按钮

0 投票
0 回答
111 浏览

android - 从 JetPack Proto DataStore 读取值

我正在使用 JetPack DataStore,因为我需要持久对象和原始类型。但我在从我的 protoDataStore 读取值时遇到问题。使用文档中的阅读方法(https://developer.android.com/topic/libraries/architecture/datastore#kotlin)。我总是在 protobuf 中获得存储数据的流。有没有办法返回一个 Int 值?例如:

有没有办法将 exampleCounter 存储在 Int 引用中?

提前致谢!

编辑:换句话说,我想重建存储的对象。

0 投票
1 回答
531 浏览

java - Java 中的 DataStore Android 示例

需要在 java 中为我的 android 项目实现 DataStore。我正在关注此文档: https ://developer.android.com/topic/libraries/architecture/datastore?hl=pt-br#java 但无法正常工作。我只能在 Kotlin 中找到示例。有人可以向我展示一个在 java 中使用 DataStore Preferences 的简单示例吗?谢谢!!!