我使用以下帮助器将用户输入保存到sharedpreference:
protected void storeData(SharedPreferences.Editor editor,
String key, EditText et) {
String content = et.getText().toString();
if ("".equals(content)||" ".equals(content)) {
editor.remove(key);
} else {
editor.putString(key, content);
}
}
然后
number1 = (EditText)findViewById(R.id.number1);
SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
storeData(editor,"number1", number1);
editor.commit();
我想问一下如何将该值作为整数检索,然后将其用于某些计算。
我一直在搜索this,发现他们使用了editor.putInt(key,content);
但是可以直接从我的方法中提取整数值吗? 谢谢。
答案 0 :(得分:1)
您确实应该使用putInt()
,但您也可以使用Integer.parseInt("some string")
将String值转换为整数。
答案 1 :(得分:1)
在else部分
中使用editor.commit()建议: 使用editor.apply()而不是editor.commit()作为提交处理前台中的作业,而应用异步处理句柄。
答案 2 :(得分:1)
您的storeData()
方法正在设置字符串(putString()
)。共享prefs存储的类型值明显不同。也就是说,你不能把“1”作为一个字符串,然后把它作为一个整数来得到它。
您需要始终使用put/getInt()
。或者,您可以将其存储为字符串,并再次始终将其作为字符串获取并根据需要将其强制转换为int。
答案 3 :(得分:0)
我知道,这个问题已经被问了很久了。我想到了类似的情况。因此,将来可能会对某人有所帮助。
//for integer values
port = (EditText) findViewById(R.id.devicePort);
int devicePort = Integer.parseInt(port.getText().toString());
editor.putInt(getString(R.string.devicePort), devicePort);
editor.apply();