从sharedpreference

时间:2016-06-22 18:37:52

标签: android sharedpreferences

我使用以下帮助器将用户输入保存到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);

但是可以直接从我的方法中提取整数值吗? 谢谢。

4 个答案:

答案 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();