在共享首选项中保存值给出错误

Saving value in Shared Preference giving error

我想存储一个位于 if 块内的字符串值,并且我想访问它之外的值。现在我尝试使用此代码,但它给了我错误,并且通过说 "Print ln needs a message" 强制关闭了应用程序。它是一个广播接收器 class,此代码位于 OnReceive 方法中。 我试过这个代码:

if (!available)
for (String key : contactNumber.keySet()) {
   String msgSender = contactNumber.get(key);
   extractedContact = Utilities.extractNumbers(key);
   preferences = context.getSharedPreferences("progress",Context.MODE_PRIVATE);
   SharedPreferences.Editor editor = preferences.edit();
   editor.putString("number", extractedContact);
   editor.apply();
   }

String showNumber = preferences.getString("number", "");
Toast.makeText(context, showNumber + "Hello",   Toast.LENGTH_LONG).show();

现在我只想将提取的联系人值存储在共享首选项中,然后我在 if 块之外检索它,但它给我错误。谁能知道问题出在哪里?我怎样才能取回存储的值

替换这行代码

editor.apply();

来自

editor.commit();

尝试在从首选项中获取值之前添加以下行。

如下,

      preferences = context.getSharedPreferences("progress",Context.MODE_PRIVATE);
     String showNumber = preferences.getString("number", "");
     Toast.makeText(context, showNumber + "Hello",   Toast.LENGTH_LONG).show();

表示Preference未初始化,需要初始化

for (String key : contactNumber.keySet()) {
..
}

所以,

       if (!available)
    {
   preferences = context.getSharedPreferences("progress",Context.MODE_PRIVATE);

        for (String key : contactNumber.keySet()) {
           String msgSender = contactNumber.get(key);
           extractedContact = Utilities.extractNumbers(key);

           SharedPreferences.Editor editor = preferences.edit();
           editor.putString("number", extractedContact);
           editor.apply();
           }

        String showNumber = preferences.getString("number", "");
        Toast.makeText(context, showNumber + "Hello",   Toast.LENGTH_LONG).show();

    ...
    }// if (!available) close bracket

谢谢..