【问题标题】:Storing data in SharedPreferences accessible to all activities将数据存储在可供所有活动访问的 SharedPreferences 中
【发布时间】:2012-07-01 03:04:59
【问题描述】:

我想使用 SharedPreferences 存储和检索我的应用程序中的所有活动都可以访问的数据。那可能吗?到目前为止,我一直在这样做,以便为特定活动存储数据。

【问题讨论】:

  • 也可以使用默认的preference文件,见this

标签: android sharedpreferences


【解决方案1】:

是的。 SharePreferences 正是这样做的。 在每项活动中,您都可以这样做:

SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(name, value);
editor.commit();

然后在其他活动中检索值:

mPrefs.getString(name, "");

这是文档: http://developer.android.com/reference/android/content/SharedPreferences.html

这是一个很好的例子:

http://myandroidsolutions.blogspot.it/2012/03/android-preferenceactivity.html

【讨论】:

  • 真的很有帮助 thnx :)
  • 这看起来很有用,但它是最新的吗?我想知道“ApplicationConstants”是什么,我在文档中找不到任何关于它的信息。此外,该博客中的好例子已经消失了。不过这是有道理的,我意识到答案是 5 年前给出的。
  • ApplicationConstants 将是在 app 的常量文件中定义的常量,或者有一个名为 ApplicationConstants 的 java 类,您可以简单地在那里传递一个字符串,但要确保该字符串在您使用的任何地方都相同。跨度>
【解决方案2】:

是的,这就是它的全部目的。

这是你应该如何写信给它的,通过Editor

    final SharedPreferences shp         = ctx.getSharedPreferences(ctx.getString(R.string.app_name), Context.MODE_PRIVATE);
    final SharedPreferences.Editor ed   = shp.edit(); 
    ed.putString("var1", "var1");
    ed.putString("var2", "var2");

并加载它:

shp.getString("var1", "defvalue");

【讨论】:

  • 好的,它叫做getSharedPreferences。我只使用getPreferences。谢谢!
【解决方案3】:

我有更好的版本。有时当您尝试执行 getSharedPreferences 时,您可能会收到一个错误,因为它无法找到。 这就是我在我的 Android 项目中存储值的方式。

添加

SharedPreferences sharedPreferences=this.getSharedPreferences("packagename", Context.MODE_PRIVATE);

 sharedPreferences.edit().putString("username", "specify name here").apply();

包名可以直接从活动顶部复制,例如:com.example.name.projectname

检索

String username = sharedPreferences.getString("username","");

【讨论】:

    【解决方案4】:

    如果您想访问所有活动中的值,我认为更好的方法是存储在自定义应用程序类中,然后您可以:

    ((CustomApplication)getApplication()).getStoredValue()
    

    共享首选项存储在文件中,此文件访问速度较慢。

    【讨论】:

      【解决方案5】:

      是我的示例,用于设置和获取名为“USER”的对象数据的创建函数

      用于设置 sharePreference 数据

      public void saveUser(User usuario) {
              SharedPreferences sharedPref = getSharedPreferences("A", Context.MODE_PRIVATE); // sharedpreference set named "A"
      
              SharedPreferences.Editor editor = sharedPref.edit();
              editor.putString("name", usuario.getNombre());
              editor.putString("username", usuario.getUsername());
              editor.putString("pass", usuario.getContrasena());
              editor.putString("roll",usuario.getRol());
              editor.commit();
          }
      

      获取 sharePreference 数据

      public Usuario getUser() {
              SharedPreferences sharedPref = getSharedPreferences("A", Context.MODE_PRIVATE);   // sharedpreference set named "A"
              User usuario = new User();
              usuario.setNombre(sharedPref.getString("name", "null"));
              usuario.setUsername(sharedPref.getString("username", "null"));
              usuario.setContrasena(sharedPref.getString("pass", "null"));
              usuario.setRol(sharedPref.getString("roll", "null"));
              return usuario;
          }
      

      重要提示:在本例中将 name 设置为 sharePreference 为“A”

      【讨论】:

        猜你喜欢
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 2020-09-21
        • 2018-12-13
        • 2017-12-08
        • 1970-01-01
        • 2012-08-10
        • 2013-09-27
        相关资源
        最近更新 更多