2011-08-24 13 views
6
URI imageUri = null; 

//Setting the Uri of aURL to imageUri. 
try { 
    imageUri = aURL.toURI(); 
} catch (URISyntaxException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

Estoy usando este código para traducir una URL a un URI. ¿Cómo podría guardar la imageUri en SharedPreferences, o una memoria donde no sería eliminada en Destroy()?¿Cómo usar SharedPreferences para guardar un URI o cualquier almacenamiento?

Yo no quiero hacer la base de datos SQLite porque el URI cambiará cuando change.I de la URL no desea utilizar la memoria para poner sin usar URI de

Respuesta

9

Para empezar usando SharedPreferences de almacenamiento que tendrá que tener algo como esto en su onCreate():

SharedPreferences myPrefs = getSharedPreferences(myTag, 0); 
SharedPreferences.Editor myPrefsEdit = myPrefs.edit(); 

Creo que se puede hacer algo como esto para almacenarlo:

myPrefsEdit.putString("url", imageUri.toString()); 
myPrefsEdit.commit(); 

Y entonces algo como esto para recuperar:

try { 
    imageUri = URI.create(myPrefs.getString("url", "defaultString")); 
} catch (IllegalArgumentException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
0

Para guardar el URI como una preferencia primero tiene que traducirlo a una cadena usando el método getPath(). Entonces puedes almacenarlo así.

SharedPreferences pref = getSharedPreferences("whateveryouwant", MODE_PRIVATE); 
SharedPreferences.Editor prefEditor = userSettings.edit(); 
prefEditor.putString("key", uriString); 
prefEditor.commit(); 
5

Puede simplemente guardar una representación de cadena de su URI.

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("imageURI", imageUri.toString()); <-- toString() 

A continuación, utilice el método Uri parse para recuperarlo.

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
String imageUriString = settings.getString("imageURI", null); 
Uri imageUri = Uri.parse(imageUriString); <-- parse 
+0

En su código de ejemplo usó el objeto java.net.URI que tiene .create (String) en lugar de .parse (String) como android.net.Uri. ¿Hay una ventaja al usar uno de estos sobre el otro? – FoamyGuy

+0

Supuse que android.net.Uri era lo que el OP intentaba guardar para las preferencias compartidas. Si no, tu respuesta es definitivamente la correcta. – Kal

+0

Creo que ambos funcionarían, y nunca he encontrado ninguna razón para uno sobre el otro – FoamyGuy

Cuestiones relacionadas