【问题标题】:How to save a string in sharedPreferences如何在 sharedPreferences 中保存字符串
【发布时间】:2019-01-07 13:38:33
【问题描述】:

我有一个应用程序,我需要在 sharedpreferences 中保存一个字符串,以便用户已经打开应用程序一次并注册了他的电子邮件,他不必再次通过同一屏幕而是直接进入主屏幕.

我的班级 PreferencesHelpers

public class PreferencesHelpers {

private static final String SHARED_PREFS = "sharedPrefs";
private static final String TEXT = "ahhsaushhuuashu"; //I want to save this string

public String text;


public static void saveData(Context context) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putString("", TEXT);

}

public static String loadData(Context context) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
    String text = sharedPreferences.getString("ahhsaushhuuashu", "");
    return text;
   }

}

MyLogic 在 MainActivity 中保存和检索 sharedPreferences 值

  if (!preferencesHelpers.loadData(getApplicationContext()).contains("ahhsaushhuuashu")) {
                webView.loadUrl(URL_);
                preferencesHelpers.saveData(getApplicationContext());
            } else {
                switch (urlMessage) {
                    case "REDR":
                        webView.loadUrl(URL + "cira");
                        break;
                    default:
                        webView.loadUrl(URL + "?UDI=" + getInstance().getRegistrationManager().getSystemToken() + "&dev=" + getInstance().getRegistrationManager().getDeviceId() + "&source=app");
                }
            }

我寻找适合我的情况的答案,但我没有找到并原谅我的英语

【问题讨论】:

  • 你为什么不在共享偏好中为你的价值分配一个关键? editor.putString("", TEXT);
  • SharedPreference 使用键、值对。替换 editor.putString("", TEXT); with editor.putString("savingKey", TEXT);和 String text = sharedPreferences.getString("ahhsaushhuuashu", "");使用字符串文本 = sharedPreferences.getString("savingKey", "");。这应该可以正常工作
  • 以上答案 + 你错过了apply(),当你想保存你的偏好时。

标签: java android sharedpreferences


【解决方案1】:

您需要一个固定密钥来保存和读取您的首选项,而您忘记应用 SharedPreference 的修改。

你需要这样做:

private static final String SHARED_PREFS = "sharedPrefs";
private static final String TEXT = "ahhsaushhuuashu";
private static final String KEY = "myKey";

public static void saveData(Context context) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(KEY, TEXT);
    editor.apply();
}

public static String loadData(Context context) {
    SharedPreferences sharedPreferences = context.getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
    String text = sharedPreferences.getString(KEY, "");
    return text;
}

【讨论】:

    【解决方案2】:

    正如其他人在 cmets 中提到的,您需要 Keys 来存储值,但我也看到您没有在 saveData 方法中保存值。

    你需要输入这一行:

    editor.apply()
    

    之后

    editor.putString("", TEXT);
    

    saveData 方法中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-25
      • 2018-08-08
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2014-06-24
      • 1970-01-01
      相关资源
      最近更新 更多