在 SharedPreferences Android 中使用当前日期作为键

Posted

技术标签:

【中文标题】在 SharedPreferences Android 中使用当前日期作为键【英文标题】:Using the current date as a key in SharedPreferences Android 【发布时间】:2015-10-11 15:15:12 【问题描述】:

我正在制作一个应用程序,让我可以跟踪我在 android 中的收入/支出。我希望该应用程序能够向我显示特定时间跨度内的收入和支出。

到目前为止我得到的是这个

 public void buildArray (String num, String kat, String titel) 
        Set<String> mySet = new HashSet<String>();
        mySet.add(num);
        mySet.add(kat);
        mySet.add(titel);

        saveData(mySet);
    


    public void saveData (Set<String> setName) 
        SharedPreferences sp = this.getActivity().getSharedPreferences("Utgifter", Context.MODE_PRIVATE);
        SharedPreferences.Editor edit = sp.edit();

        Date date = new Date();

        edit.putStringSet(String.valueOf(date), setName);
        edit.commit();


    

对于用户输入的每个条目,我想存储四个值。条目的金额、类别和标题,以当前时间为键。

我的问题是如何从 SharedPreferences 中读取字符串集以及使用日期作为键是个好主意?无论如何循环所有保存的值并在特定时间间隔内读取这些值?

谢谢!

【问题讨论】:

【参考方案1】:

在我看来,您需要的是一个数据库。

SharedPreferences 更适合存储原始数据,一旦您需要更复杂的逻辑,这将是一个挑战。

您可以使用SQLite,并创建一个数据库管理器类。

【讨论】:

感谢您的回答。我会阅读 SQLite 并希望能解决我的问题。 好吧,我确定如果你查看 youtube sqlite android 教程,你会发现大量的资源 H2 是一个纯 Java 数据库,旨在嵌入到应用程序中。比 SQLite 更强大、更成熟的数据库。见this Question。【参考方案2】:

如何从 SharedPreferences 中读取字符串集 您可以将设置存储在共享首选项中并阅读它,您可以这样做

public Set<String> loadDataSet (String key) 
    SharedPreferences sp = this.getActivity().getSharedPreferences("Utgifter", Context.MODE_PRIVATE);
    Set<String> setName = sp.getStringSet(key, Set<String> defValues);
    return setName;

使用日期作为关键字是个好主意吗?

什么是关键:要检索和保存的首选项的名称

因此,如果您在保存过程中使用日期作为键,那么在 r检索您的数据时,您将如何记住相同...为此,您需要再次将日期保存某处. 因此您的密钥在您的应用程序中应该是独立且恒定的

Alternativley如果您还需要保存集和日期,则可以使用其他持久性存储机制。

【讨论】:

感谢您的回复。您在谈论哪些其他持久性存储机制?我目前正在看一些关于 SQLite 的教程。 @MartinTocaj 其他持久性机制,例如将数据写入文件并将其保存在内存中(内部或外部),使用 SQLite 数据库或通过网络将数据保存在服务器上......选择完全取决于有关您的要求和限制以获取更多信息,请参阅:developer.android.com/guide/topics/data/data-storage.html

以上是关于在 SharedPreferences Android 中使用当前日期作为键的主要内容,如果未能解决你的问题,请参考以下文章

SharedPreferences 简介

如何在颤振中创建 SharedPreferences 的 Singleton 类

如何在注销期间清除 SharedPreferences? [复制]

Android-SharedPreferences

SharedPreferences 存储

如何使用SharedPreferences? [重复]