2012-02-07 5 views
0

Je viens de poser une question à ce sujet, mais je veux y aller différemment. Lorsqu'un utilisateur édite son profil et touche le bouton de sauvegarde, je veux être en mesure de générer un nombre aléatoire en utilisant UUID. Je veux que cet identifiant reste le même si l'utilisateur revient en arrière et édite son profil une seconde fois (s'il appuie de nouveau sur «sauvegarder», je veux conserver l'identifiant qui a été généré la première fois que j'ai appuyé sur «sauvegarder»). J'ai le code suivant qui fonctionne pour enregistrer d'autres données, mais je ne suis pas sûr comment inclure une vérification qui peut savoir si un ID a déjà été généré. Voici mon code:Enregistrement de l'ID utilisateur dans les préférences partagées 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

cela dépend de la façon dont vous avez mis 'PreferenceConnector' btw. Oh, et vos instructions if (phoneText! = Null &&! PhoneText.equals ("")) -style - celles-ci devraient certainement être remplacées par un bon et normal 'if (! TextUtils.isEmpty (phoneText))' .. – Jens

Répondre

2

Vous pouvez définir une SharedPreference booléenne qui est initialement définie sur false puis à true le temps foirst un ID est généré, puis vous cochez cette booléen avant de générer et ID et seulement générer si il est faux si basiquement

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

Edit:

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

Pourriez-vous approfondir la question? Je commence à comprendre mais pas assez pour l'implémenter. Merci – mkyong

+0

Génial. Cela a beaucoup plus de sens. Maintenant, comment accéder à la chaîne uuid? Il dit que c'est une variable locale et je suis incapable de l'utiliser plus tard dans mon programme. – mkyong

+0

Je suppose que vous utilisez le PreferenceConnector pour sauvegarder ces valeurs? Donc, où // j'ai fait votre truc ... vous utiliseriez le PreferenceConnector pour enregistrer l'ID tout comme vous sauvegardez les autres valeurs. Puis l'obtenir à partir de n'importe où si est enregistré en cas de besoin. – mbwasi

Questions connexes