【问题标题】:Writing data in SharedPrefer - Application stops responding在 SharedPrefer 中写入数据 - 应用程序停止响应
【发布时间】:2012-10-05 11:45:37
【问题描述】:

我正在使用以下代码将数据存储在共享首选项中。 但是,每当调用此代码时,虚拟设备都会告诉我应用程序 停止响应。有什么建议为什么会发生这种情况?

SharedPreferences spref =       this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = spref.edit();
editor.putString("td", "SharedPref"); //name-value pair
editor.commit();

编辑: 现在我正在使用以下

SharedPreferences spref = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); SharedPreferences.Editor 编辑器 = spref.edit(); editor.putString("td", "SharedPref"); editor.commit();

但我仍然收到“应用程序已意外停止..请重试”

虚拟设备似乎有问题。重新创建后,我的应用程序开始正常工作。

【问题讨论】:

  • 尝试使用 getSharedPreferences,然后粘贴 logcat。
  • 您是想在 Activity 类内部还是在 Activity 类外部使用它?如果它在带有两个参数的 Activity 类 getSharedPreferences() 内就足够了。第一个参数是要保存在 SharedPreference 位置的文件的名称,第二个参数是 mode。您只给出了 mode
  • @AnujAroshA 我仍然收到错误消息。请检查我的编辑代码
  • 嘿亚当,你能发布更多你的代码吗?很抱歉,当其他人说您需要使用 getSharedPreference 或使用外部存储时,他们应该是错的。使用 getPreferences() 是合法的,如果不是总是你想做的。但是,您现在拥有的代码应该是合法的,因此我们需要更多信息。具体来说,您能否发布您的整个 Java 文件和 logcat 输出?
  • 很高兴它成功了。想知道问题可能是什么:) 至于我之前所说的,如果您使用 getPreferences(int mode),虽然它是合法的,但如果您想要 Activity 独有的首选项,而不是整个应用程序,建议您这样做。因此,它与 getSharedPreferences(string, int) 之间的区别在于,您正在使用该字符串名称创建一个“文件”,您可以通过随后使用相同字符串调用 getSharedPreferences 在整个应用程序中访问该文件。

标签: android sharedpreferences


【解决方案1】:

试试这个

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(Context);

【讨论】:

    【解决方案2】:

    你正在初始化错误的初始化

    final SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
    

    这会起作用。

    【讨论】:

      【解决方案3】:

      在我的应用程序中,我更喜欢使用自己的位置名称。声明

      public static final String PREFS_NAME = "MyPrefsFile";
      

      然后在代码中

      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);  //0 might be bad naming, can just use MODE_PRIVATE or something instead depending on what you need to do :)
      SharedPreferences.Editor editor = settings.edit();
      editor.putInt("key", "value");
      editor.commit();
      

      如果您保存的信息是正确的,这应该不会有任何问题

      编辑

      您还需要使用以下内容更新清单:

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
      

      【讨论】:

      • 在外面,我通常把它放在 minSdkVersion/targetSdkVersion 之后的右上角
      猜你喜欢
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多