2012-02-07 102 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