2012-02-07 101 views
0

我剛纔問了一個關於這個的問題,但我想以一種不同的方式進行討論。當用戶編輯他/她的配置文件並點擊保存按鈕時,我希望能夠使用UUID生成一個隨機數。如果用戶第二次返回並編輯他們的個人資料(如果他們再次按「保存」,我想保留第一次按'保存'時生成的ID),我希望此ID保持不變。我有下面的代碼工作來保存其他數據,但我不知道如何包含一個檢查,可以找出是否已生成一個ID。這裏是我的代碼:在共享首選項中保存用戶ID Android

public void save(View view) { 
    String firstnameText = firstname.getText().toString(); 
    String lastnameText = lastname.getText().toString(); 
    String phoneText = phone.getText().toString(); 
    String cityText = city.getText().toString(); 
    String zipText = zip.getText().toString(); 
    String uuid = UUID.randomUUID().toString(); //Generate random ID but I 
               think this would generate a 
               new ID each time the data is  
               saved 

    if (firstnameText != null) 
     PreferenceConnector.writeString(this, PreferenceConnector.FIRSTNAME, 
       firstnameText); 
    if (lastnameText != null) 
     PreferenceConnector.writeString(this, PreferenceConnector.LASTNAME, 
       lastnameText); 

    if (phoneText != null && !phoneText.equals("")) 
     PreferenceConnector.writeLong(this, PreferenceConnector.PHONE, 
       Long.parseLong(phoneText)); 

    if (cityText != null) 
     PreferenceConnector.writeString(this, PreferenceConnector.CITY, 
       cityText); 

    if (zipText != null && !zipText.equals("")) 
     PreferenceConnector.writeInteger(this, PreferenceConnector.ZIP, 
       Integer.parseInt(zipText)); 

    if (uuid != null) //what next? 

    startActivity(new Intent(PreferencesActivity.this, Main.class));       
} 
+0

這取決於你如何實現'PreferenceConnector' BTW。噢,你的'if(phoneText!= null &&!phoneText.equals(「))''風格的語句 - 那些應該一定會被一個漂亮而正常的'if(!TextUtils.isEmpty(phoneText))'替代。 – Jens 2012-02-07 13:36:43

回答

2

您可以設置一個布爾SharedPreference被initialy設置爲false,然後設置爲true,則會生成一個ID的foirst時間,那麼你生成和ID之前檢查這個布爾並僅生成當它是假的所以basicly

//get idHasBeenGenerated from prefs with default false 
if(!idHasBeenGenerated) 
{ 
//generate ID 
//change value of idHasBeenGenerated to true and save in shared prefs. 
} 

編輯:

SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
boolean idHasBeenGenerated = prefs.getBoolean("idgenerated", false); 

if(!idHasBeenGenerated){ 
    String uuid = UUID.randomUUID().toString(); 

//do your thing with PreferenceConnector 
    Editor editor=prefs.edit(); 
    editor.putBoolean("idgenerated", true); 
    editor.commit(); 
}else{   
    //Do nothing ID has already been generated 
} 
+0

你能擴展一些嗎?我開始理解但不足以實現它。謝謝 – mkyong 2012-02-07 14:00:35

+0

太棒了。這使得更有意義。現在我如何訪問uuid字符串?它說這是一個局部變量,我以後在我的程序中無法使用它。 – mkyong 2012-02-07 15:02:49

+0

我假設您使用PreferenceConnector以某種方式保存這些值?因此,在我擁有//執行您的操作的情況下,您可以使用PreferenceConnector保存ID,就像保存其他值一樣。然後從任何地方得到它,如果在需要時保存。 – mbwasi 2012-02-07 15:43:42