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

Tôi đang sử dụng mã này để dịch URL sang URI. Làm thế nào tôi có thể lưu imageUri vào một SharedPreferences, hoặc một bộ nhớ mà nó sẽ không bị xóa trênDestroy()?Cách sử dụng SharedPreferences để lưu URI hoặc bất kỳ Bộ nhớ nào?

Tôi không muốn làm cơ sở dữ liệu SQLite vì URI sẽ thay đổi khi change.I của URL không muốn sử dụng lên bộ nhớ cho không sử dụng URI của

Trả lời

9

Để bắt đầu sử dụng SharedPreferences cho lưu trữ mà bạn sẽ cần phải có một cái gì đó như thế này trong onCreate() của bạn:

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

Tôi nghĩ rằng bạn có thể làm một cái gì đó như thế này để lưu trữ nó:

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

Và sau đó một cái gì đó như thế này để lấy:

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

Để lưu uri như một sở thích đầu tiên bạn cần phải dịch nó vào một chuỗi bằng cách sử dụng phương thức getPath(). Sau đó, bạn có thể lưu trữ nó như thế này.

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

Bạn chỉ có thể lưu biểu diễn chuỗi của URI của bạn.

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

Sau đó, sử dụng phương thức Uri parse để truy xuất.

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

Trong mã ví dụ của mình, ông đã sử dụng đối tượng java.net.URI có .create (String) thay vì .parse (String) như android.net.Uri. Có một nhược điểm để sử dụng một trong số này trong số này? – FoamyGuy

+0

Tôi thực sự giả định android.net.Uri là những gì OP đang cố lưu vào các tùy chọn được chia sẻ. Nếu không, câu trả lời của bạn chắc chắn là đúng. – Kal

+0

Tôi nghĩ rằng họ sẽ làm việc cả hai, và tôi chưa bao giờ gặp bất kỳ lý do nào cho một trong những khác – FoamyGuy

Các vấn đề liên quan