EditBoxPreference()将值存储为int而不是字符串

时间:2011-03-24 13:21:02

标签: android

我正在编写一个Android应用程序,可以轻松地将文件和文件夹备份到用户PC。我想要实现的一件事是允许在Android设备上运行的客户端更改我将发送文件的端口。

为此,我创建了一个EditTextPreference来存储值。

我用来获取此值的代码是

port = prefs.getString("serverPort", "<unset>");

但是,这会返回一个字符串,我需要一个int,所以我尝试使用

sendPort = Integer.parseInt(port);

但这会导致Android应用程序崩溃,我认为这是一种数字格式异常。

无论如何,我可以明确地存储作为整数输入的值以使其更容易吗?

我尝试使用方法

port = prefs.getInt(...);

但这也不起作用。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

这会将您输入编辑文本的内容输入int。

int yourValue = Integer.valueOf(editText.getText().toString());

请注意,如果您在其中放入一个没有整数值的String,Integer.valueOf()将返回格式异常。

然后您可以使用

prefsEdit.putInt("serverPort", yourValue);
prefsEdit.commit();

将其保存到首选项。这要检索它

int port = prefs.getInt("serverPort", -1);

答案 1 :(得分:0)

将端口保存为Stringint并没有太大区别。无论哪种方式,你都必须转换它。

您的应用崩溃,因为它无法将<unset>转换为NumberFormatException来自的数字。

<强>解决方案: 抓住NumberFormatException并将sendPort设置为默认值。

port = prefs.getString("serverPort", "<unset>");
try {
  sendPort = Integer.parseInt(port);
} catch (NumberFormatException ex) {
  sendPort = 1234;
}