问题标签 [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 投票
0 回答
176 浏览

android - 使用 Jetpack 数据存储保存复选框状态

我目前正在编写一个应用程序,其中 recyclerview 中的每个项目都有一个复选框。用户可以单击复选框来保存特定电影。

我想使用 Jetpack Datastore 来保存复选框的状态。我设置了首选项管理器,但我在片段中遇到了困难,因为后者没有对复选框的引用(复选框在项目布局中)

在下面,您将找到首选项管理器类、daoviewmodel(我正在使用另一个视图模型从 api 获取数据)以及显示 recyclerview 的片段之一。

任何帮助是极大的赞赏。谢谢!

首选项管理器.kt

DaoViewModel.kt

MoviesListFragment.kt

0 投票
0 回答
39 浏览

android - 使用带有复选框的 Jetpack 数据存储

我目前正在编写一个显示电影列表的应用程序。

我正在使用带有 3 个选项卡的底部导航栏:趋势、发现和收藏夹。每个都显示电影列表,用户可以按下电影并转到详细信息片段。详细信息片段有一个复选框,可以将电影添加到收藏夹选项卡。

复选框有效,电影已添加到收藏夹,但复选框状态有问题。例如,如果我从详细信息片段(例如从趋势选项卡)添加电影,然后转到收藏夹选项卡并按电影以转到详细信息片段,则不会选中。

此外,如果我回到趋势并按下电影,它也不会被检查。

任何帮助是极大的赞赏。

MoviesDetailsFragment.kt

DaoViewModel.kt

首选项管理器.kt

0 投票
1 回答
657 浏览

java - 从 SharedPreferences 迁移到 Jetpack DataStore “Java”

根据这个问题,我正在尝试将当前项目从 SharedPreferences 迁移到 dataStore 以存储用户选择的布局值,问题在于读取值,我得到了 NPE,首先这是我的代码

内部DataStoreRepository

我在这样的片段中使用它

首先,我阅读了可流动的

然后在同一个类中,我将值存储在方法上changeAndSaveLayout()

当我运行时,我得到了这个 NPE,它是关于读取值readLayoutFlow的,我试图在这样的方法之外创建密钥

并在 saveValue() 中像这样更改它的值,但它也不起作用

RECYCLER_VIEW_LAYOUT_KEY.to(keyName);

NPE的输出

0 投票
1 回答
110 浏览

android - 在 DataStore 迁移后删除 SharedPreferences

我遇到了这个问题,修复很简单但不明显,所以我想我会分享。

我正在将单个字段从迁移SharedPreferences到 aPreferences DataStore并使用默认值SharedPreferencesMigration来执行此操作。每次迁移运行时,我的SharedPreferences文件都会被删除。

0 投票
0 回答
88 浏览

android - datastore.first() , .last() , .map() 等方法在 Android Studio 的所有项目中都丢失/未解决的引用错误,idk 为什么它们消失了

我不知道为什么会这样,昨天它运行良好但是这次当我再次打开项目时,它缺少这些方法:- datastore.data.first(),datastore.data.last()和其他类似的方法也缺少它似乎都属于 kotlinx。协程和是扩展函数。 Ide 显示未解决的参考,但我的所有依赖项都是正确的,这里的错误可能是什么?我尝试过使缓存无效并重新启动、重建、清理项目。请任何人帮助我!

这是项目中使用的依赖项,这是错误参考的图像

0 投票
1 回答
109 浏览

android - 使用 PreferencesDataStore 将主题设置为活动

我已将我的应用程序从 using 切换SharedPreferencesPreferencesDataStore. 我还在我的应用程序中实现了暗模式和几个主题。对于主题,我基本上在每个活动中都依赖此代码:

选定的主题被存储为一个整数,每个主题用于浅色模式和深色模式。现在,我也想采用我的代码的这一部分。我从我的 dataStore 存储库中获取了 darkMode 布尔值,如下所示:

如果我在 LiveData 对象的 observe(this) { ... } 内工作,它将无法工作。

现在,如何将上面显示的代码片段更改为PreferencesDataStore?或者实际上是否更好,例如创建一个单独的类以便从那里观察值?如果是的话,那样的东西怎么可能呢?或者你知道一些遵循 Android 架构的很好的示例代码,包括我可以查看的带有暗模式的自定义主题吗?

我仍在学习很多东西,非常感谢任何有助于更好地理解这一点的帮助!

最好的问候,马库斯

编辑

0 投票
1 回答
369 浏览

android - 将数据保存到 OnLifecycleEvent.ON_STOP 中的 Preferences DataStore 永远不会被调用

当按下后退按钮时,我很想观察一些数据并将其保存ON_START到共享首选项中。ON_STOP问题是调用了前面的代码preferencesDataStore.dataStore.edit,但该值未保存到首选项中。

这是我的代码。

查看型号:

分段:

数据层:

刀柄。

构建.gradle

我了解我的数据未保存的原因是因为模型视图范围被取消,并且repository.saveData(_myUiState.value)也被取消。

我想知道正确的模式是什么。

0 投票
1 回答
383 浏览

android - 如何将数据存储 api 与 jetpack compose 一起使用?

我在 viewModel 中保留时间状态,需要将当前状态存储在首选项中,并在用户关闭并再次打开应用程序时再次加载时间状态。这是我当前的代码。

视图模型

可组合功能

0 投票
0 回答
72 浏览

android - How to perform version migrations in Android Jetpack Datastore

Performing a migration from SharedPrefs into DataStore is straightforward and documented very well. However when I want to do a simple "version bump" migration from DataStore to still DataStore, meaning some keys might have changed etc. how should one do that?

As far as I see now, we need to manually implement these functions in the migrations parameter when creating the DataStore.

I haven't seen anyone talking about it, or it being part of the codelab unfortunately which was a big surprise to me. Could someone point me to where I could look to get some inspiration about how to do this properly?

0 投票
1 回答
103 浏览

android - Android Jetpack 数据存储“限制”

由于共享首选项数据跨 1428.51-kb 时存在内存异常,因此推荐的 Android Jetpack DataStore 的内存限制是否相同?

由于 DataStore 使用带有协议缓冲区的类型化对象,在内存的情况下会有优势吗?