2012-06-19 3 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

рассмотреть возможность использования() http://developer.android.com/reference/android/content/SharedPreferences. Editor.html # apply() вместо этого, поскольку он записывает изменения в файл асинхронный – AZ13

Смежные вопросы