2011-08-24 10 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(); 
} 

Używam tego kodu do tłumaczenia adresu URL na URI. Jak mogę zapisać imageUri w SharedPreferences lub w pamięci, gdzie nie zostałby on usunięty onDestroy()?Jak korzystać z SharedPreferences, aby zapisać URI lub dowolną pamięć masową?

nie chcę robić SQLite bazy danych, ponieważ URI zmieni, gdy adres URL jest change.I nie chcesz korzystać pamięć za niewykorzystane URI

Odpowiedz

9

Aby rozpocząć korzystanie SharedPreferences do przechowywania musisz mieć coś takiego w swoim onCreate():

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

myślę, że można zrobić coś takiego, żeby go zapisać:

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

I wtedy coś takiego, aby pobrać:

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

Aby zapisać URI jako preferencja trzeba najpierw przełożyć go do ciąg znaków za pomocą metody getPath(). Następnie możesz go zapisać w ten sposób.

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

Możesz po prostu zapisać ciąg znaków w swoim identyfikatorze URI.

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

Następnie użyj metody Uri parse, aby ją odzyskać.

+0

W swoim przykładowym kodzie użył obiektu java.net.URI, który ma .create (String) zamiast .parse (String) jak android.net.Uri. Czy jest jedna strona do korzystania z jednego z nich? – FoamyGuy

+0

Właściwie założyłem android.net.Uri było tym, co OP próbował zapisać do wspólnych preferencji. Jeśli nie, twoja odpowiedź jest zdecydowanie poprawna. – Kal

+0

Myślę, że oboje by działali, a ja nigdy nie spotkałem się z żadnymi przyczynami – FoamyGuy

Powiązane problemy