【问题标题】:Android storing string arrayAndroid存储字符串数组
【发布时间】:2011-11-03 20:12:31
【问题描述】:

过去一天半以来,我一直在几个网站上寻找有关如何存储字符串/字符串数组/等的信息。我似乎无法弄清楚。我不确定我是否只是不太理解如何实现数据存储......或者什么。但这是我的问题,简单地说,我有两个活动页面(我们将分别命名为'A,B')。我要做的就是从 Activity B 中的文本视图中获取一个字符串,将其存储在一个数组中,然后通过单击 Activity A 中的按钮访问它。

我知道这很简单,但由于某种原因我遇到了障碍......我正在尝试使用 SharedPreferences 但我如何从 Activity B 获取字符串,将其存储在全局数组中,并让其访问不同的活动(活动 A)?

【问题讨论】:

  • 谢谢大家的帮助

标签: android string storage


【解决方案1】:

只需将其存储到共享首选项中(通常在 onPause() 中):

            SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
            editor.putString(GAME_STATE, writer.toString());
            editor.commit();

在一个活动中加载另一个活动(通常在 onResume() 中):

        SharedPreferences preferences = getPreferences(MODE_PRIVATE);


    String jsonState = preferences.getString(GAME_STATE, null);

没有什么能阻止您使用公共静态变量

【讨论】:

  • 好的,这就是我所看到的,但对我来说问题发生在这里。该程序非常简单,我没有使用任何线程,只是意图。它看起来效率很低,但它是一个非常小的程序。为编辑器调用 putString 时,它是如何存储的?编辑器是否像堆栈一样,能够处理多个字符串?还是一次只能存储一个字符串?
  • 首选项编辑器是地图。只是害怕它上面的javadocs。它可以将字符串和原语存储在不同的键下。虽然它可能看起来无效,但这是在您的活动可以随时停止和终止的环境中执行的正确方法(例如在来电时)
  • 如果我想存储一个字符串现在很容易,但是你将如何存储多个字符串?如果用户按下“保存文本”按钮,那么该代码将被调用,但它不会在编辑器中使用相同的键创建一个字符串吗?有没有办法解决这个问题?
  • 然后选择不同的键。当 U gabe 存储很多不同的值时,我只是将它们序列化为 JSON 并存储为字符串(通过:github.com/ko5tik/jsonserializer
【解决方案2】:

您不能将数组直接存储在共享首选项中,但可以存储一个集合。

putStringSetgetStringSet。如果您希望将数组中的所有项目存储在 SharedPreferences 中,则可以将它们添加到 LinkedHashSet(只要它们是唯一的)。有关如何使用 SharedPreferences 的总体思路,请参阅 Konstantin 的回答。

【讨论】:

    【解决方案3】:

    是的,您可以在全局数组中获取和存储值,但是一旦关闭应用程序,您将丢失所有内容。因此,您最好创建一个表并在需要时从表中存储/获取值。

    这里是一个创建SQLite example的例子。

    【讨论】:

    • 好吧,你认为我需要 SQLite 吗?我只是想存储,也许最多,二十个字符串。
    • @Derek 但是如果您存储并关闭应用程序,您将在再次重新打开应用程序时丢失所有内容。
    • SQLite 对这个来说太过分了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多