2012-06-19 51 views
0

我的情況是:我有一個按鈕,用SD的圖像(此工作正常)更改我的父佈局的背景。然後,我喜歡將這些圖像保存在SharedPreference中,以允許用戶使用其背景圖像啓動我的應用程序,而不是我的默認背景圖像。我保存這個圖片的方式:從sharedpreferences中檢索已編碼的位圖

    SharedPreferences.Editor editor = prefs.edit(); 
       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
       yourSelectedImage.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object 
       byte[] b = baos.toByteArray(); 
       editor.putString("background", Base64.encodeToString(b, Base64.DEFAULT)); 

我找回在這條路上(該代碼是的onCreate):

 prefs = getSharedPreferences("Mis preferencias",Context.MODE_PRIVATE); 
    String fondo = prefs.getString("background", "vacio"); 

    if(!fondo.equals("vacio")){ 
     byte[] b = Base64.decode(fondo, Base64.DEFAULT); 
     InputStream is = new ByteArrayInputStream(b); 
     Bitmap yourSelectedImage = BitmapFactory.decodeStream(is); 
     BitmapDrawable bd = new BitmapDrawable(getResources(), yourSelectedImage); 
     View view = findViewById(R.id.padre); 
     view.setBackgroundDrawable(bd); 
    } 

是第一次使用sharedpreferences,並用base64圖像玩,所以我有點卡住了,如果我殺了我的應用程序並重新啓動,默認背景會出現,而不是自定義。任何幫助?感謝和抱歉我的英語。

回答

1

您忘記了editor.commit()實際上將您的字符串保存在首選項中。

+0

當然!非常感謝iulia :)我一直在想這個問題很大並且隱藏起來;) – Genaut

+0

沒有任何意義:D很高興幫助 –

+1

考慮使用apply()http://developer.android.com/reference/android/content/SharedPreferences。 Editor.html#apply()取而代之,因爲它會將更改寫入文件異步 – AZ13