2012-02-18 56 views
0

我已經開發了提示用戶,當應用程序第一次運行,但我無法將它添加到共享偏好進入他/她的電話號碼的對話框。我從另一個視圖設置並正常工作(添加/編輯信息)SP,我能夠提交用戶ID。問題是我使用Long來代替字符串的電話號碼,所以我不斷收到錯誤,似乎無法弄清楚我需要做什麼。我認爲可編輯也可能是一個問題。我一直試圖改變的getText()來getLong(),但似乎並沒有工作,因爲電話號碼是公認的在我的SP值之久,我不能將其轉換爲字符串。我怎樣才能將Long提交給共享首選項?謝謝。龍發送到共享偏好 - Android電子

這裏是我的代碼:

if(phone == 0) { 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 

     alert.setTitle("Please Enter Your Phone Number"); 
     alert.setMessage("You must enter your phone number in order to use this application"); 

     final EditText input = new EditText(this); 
     alert.setView(input); 

     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     Editable value = input.getText(); 

     Editor editor = shared.edit(); 
     editor.putLong("PHONE", value); //wants me to change putLong to putString 
     editor.commit(); 
     } 
     }); 
     alert.show();  
    } 
+0

要小心這種做法。您最終可能會收到帶有「+」和/或「 - 」的電話號碼,然後所有的地獄信號都會丟失。 – MobileCushion 2012-02-18 17:00:06

回答

2

亞歷克斯,你可以做到以下幾點,以放長到SP:

String value = input.getText().toString(); 

Editor editor = shared.edit(); 
editor.putLong("PHONE", Long.valueOf(value)); 
editor.commit(); 
+0

我認爲這是接近數字系統的基礎,但應用程序崩潰,並且我收到以下錯誤:'產生的原因:java.lang.ClassCastException:java.lang.String中不能轉換爲java.lang.Long' – mkyong 2012-02-18 17:05:11

+1

我可以問你確切的原因,你存儲的電話號碼很長嗎?就個人而言,我只會將電話號碼存儲爲字符串或整數,但不是長整型。 – 2012-02-18 17:07:30

+0

我覺得有一個原因,但我不記得了。我會嘗試將它切換到一個字符串。我將它存儲在數據庫中,我可以將電話號碼存儲爲VARCHAR嗎?我覺得我無法或什麼。 – mkyong 2012-02-18 17:13:02

0

對不起,我的英語

你不轉換字符串值到龍

使用parseLong(String s, int radix)方法是這樣的:parseLong(value, 10)

+0

你可以擴展這個嗎?我之前嘗試過沒有運氣,但我沒有第二個參數。無論如何,這個數字是多少? – mkyong 2012-02-18 17:03:23

+1

第二個參數是您要使用 – budgie 2012-02-18 17:21:05

0

change

Editable value = input.getText();

String value = input.getText().toString(); 

這會給你的文本框的字符串值。

我們店。

當且僅當你確定(和您確認),該value這裏只包含數字,這樣做:

editor.putLong("PHONE", Long.valueOf(value)); 

我還是寧願

editor.putString("PHONE",value); 

,你可以找回用繩子隨時太,然後將其更改爲長嘀......