2011-03-24 70 views
0

我正在编写一个Android应用程序,可以轻松地将文件和文件夹备份到用户PC。我想要实现的一件事是允许在Android设备上运行的客户端更改我将要发送文件的端口。EditBoxPreference()将值存储为int而不是字符串

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

我用得到这个值的代码的回复是

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

然而,这返回一个字符串,我需要一个int,所以我试图用

sendPort = Integer.parseInt(port); 

但这种崩溃Android应用程序,(我认为)数字格式异常。

是否有反正我可以明确地存储作为整数输入的值,使其更容易?

我试图使用方法

port = prefs.getInt(...); 

但也不能工作。

感谢您的任何帮助。

+0

打印端口值你把它作为整数之前因为如果端口值是不是在数量上就不能转换成int。所以先检查一下.. – Venky 2011-03-24 13:27:31

回答

3

这将采取任何输入到您的编辑文本,并把它放在一个int。

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

注意Integer.valueOf()会如果你把一个字符串不具有整数值返回一个格式异常。

然后可以使用

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

将其保存到偏好。而这个检索它

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

谢谢,非常完美。 “Integer.valueOf”方法正是我所需要的。我完全忘记了它。再次感谢。 – 2011-03-24 13:52:46

+0

这正是我需要做的,感谢您的快速回复。 – 2011-03-24 13:55:37

0

保存端口Stringint不会有很大的不同。无论哪种方式,你必须将其转换。

您的应用崩溃了,因为它无法将<unset>转换为数字,这就是NumberFormatException的来源。

解决方案: 赶上NumberFormatException并设置sendPort为默认值。

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

现在有道理。我猜这对我来说太早了。谢谢你解释我的问题是什么。 – 2011-03-24 13:57:09