【问题标题】:Saving data between activities using external class使用外部类在活动之间保存数据
【发布时间】:2012-10-03 17:04:50
【问题描述】:

我正在开发一个必须在活动之间共享字符串的应用程序。我试图让单独的活动来调用具有 set 和 get 方法的公共类。调用方法部分有效,尽管 set 和 get 类必须记住 set 值,但我设法得到了响应。这是我的设置和获取课程的链接,它非常基本:http://pastebin.com/0WabNKz3

现在我的问题是:如何设置并让班级记住我在会话之间的价值观?如果有什么不明白的,请随时提问。

谢谢!

【问题讨论】:

    标签: android string class save external


    【解决方案1】:

    您需要使用SharedPreferences。即使在应用程序关闭之后,这也是保存数据的方式,您可以从任何地方访问它:

    public void savePrefrences(String key, String value)
        {
            SharedPreferences prefs = context.getSharedPreferences(context.getPackageName(), 0);
            prefs.edit().putString(key, value).commit();
        }
    
        public String getPrefrences(String key)
        {
            SharedPreferences prefs = context.getSharedPreferences(context.getPackageName(), 0);
            return prefs.getString(key, "");
        }
    

    随时随地保存偏好,随时随地获取。

    关闭应用时该值不会被删除。

    【讨论】:

    • 我应该用什么替换 SynergyApplication._context.getSharedPreferences(context.getPackageName(), 0);随着,Eclipse 说 SynergyApplication 不能被解析为变量。 “上下文”当然也是错误的,应该是什么?
    • 如果您在活动中使用“getSharedPreferences”之前的所有内容,则可以删除它。
    • @Luis “在活动中使用它”是什么意思?当我扩展活动时,在我的课堂上使用它会崩溃
    • 如果您需要在另一个不扩展活动的类中使用它,除非您向该类提供活动上下文,否则 getSharedPreferences() 将不可用。但是,您的错误不是由于此。您需要发布日志堆栈跟踪以查看问题所在。
    • 对不起,我编辑了答案。你只需要一个上下文。如果您在 Activity 中,则可以使用它,如果没有,则应将 Context 传递给函数
    【解决方案2】:

    我最终创建了不可见的 EditTextPreference,它现在保存了我想要保留的数据,因为它们可以轻松共享。

    【讨论】:

      【解决方案3】:

      当您说在会话之间保存时,您是指在应用暂停或完全关闭之间?

      生命周期和跨会话存储数据的良好资源是: //developer.android.com/training/basics/activity-lifecycle/index.html

      【讨论】:

      • 会话之间的意思是应用程序重新启动之间的数据重复。 Sharedpreferences 将是理想的,尽管我尝试过但没有成功。
      • 我在不扩展活动时遇到语法错误,当我扩展活动时,应用程序在之前出现语法错误的行上崩溃了。该行是我试图获得共享偏好的行。
      • 好的。您有机会发布您的 SharedPreferences 代码吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多