2011-03-24 71 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