我想存储一个if块内的字符串值,我想访问它之外的值。现在我尝试使用此代码,但它通过说"打印ln需要一条消息"给我错误和应用程序强制关闭。它是一个广播接收器类,这个代码在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();
现在我只想将提取的联系人值存储在共享pref中,然后我在if块之外检索它,但它给了我错误。谁能知道这个问题是什么?我如何检索存储的值
答案 0 :(得分:1)
尝试在从偏好中获取值之前添加以下行。
如下,
preferences = context.getSharedPreferences("progress",Context.MODE_PRIVATE);
String showNumber = preferences.getString("number", "");
Toast.makeText(context, showNumber + "Hello", Toast.LENGTH_LONG).show();
答案 1 :(得分:0)
这意味着首选项未初始化,需要初始化
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
感谢..
答案 2 :(得分:-3)
替换此行代码
editor.apply();
通过
editor.commit();