【问题标题】:Saving User ID in Shared Preferences Android在共享首选项 Android 中保存用户 ID
【发布时间】:2012-02-07 13:27:40
【问题描述】:

我刚刚问了一个关于此的问题,但我想以不同的方式解决它。当用户编辑他/她的个人资料并点击保存按钮时,我希望能够使用 UUID 生成一个随机数。如果用户再次返回并编辑他们的个人资料,我希望此 ID 保持不变(如果他们再次按“保存”,我想保留他们第一次按“保存”时生成的 ID)。我有以下代码可以保存其他数据,但我不确定如何包含一个可以确定是否已经生成 ID 的检查。这是我的代码:

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));                        
}

【问题讨论】:

  • 这取决于你如何实现PreferenceConnector btw。哦,还有你的 if (phoneText != null && !phoneText.equals("")) 风格的声明——这些肯定应该被一个漂亮而正常的 if (!TextUtils.isEmpty(phoneText)).. 取代。

标签: java android unique-id


【解决方案1】:

您可以设置一个 Boolean SharedPreference,它最初设置为 false,然后在第一次生成 ID 时设置为 true,然后在生成 ID 之前检查此布尔值,并且仅在它为 false 时才生成,所以基本是

//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
}

【讨论】:

  • 您能再扩展一下吗?我开始理解但还不足以实现它。谢谢
  • 太棒了。这更有意义。现在如何访问 uuid 字符串?它说它是一个局部变量,我以后无法在我的程序中使用它。
  • 我假设您正在使用 PreferenceConnector 以某种方式保存这些值?所以我有//做你的事情......你会使用 PreferenceConnector 来保存 ID,就像你保存其他值一样。然后在需要时从任何保存的地方获取它。
猜你喜欢
  • 1970-01-01
  • 2012-03-29
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多