0

私の状況は次のとおりです。SDの画像で親レイアウトの背景を変更するボタンがあります(これは正常に機能します)。次に、これらの画像をSharedPreferenceに保存して、ユーザーがデフォルトの背景画像ではなく、背景画像を使用してアプリを起動できるようにします。この方法で画像を保存します:

                    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で画像を操作するのは初めてなので、これに少しこだわっています。アプリを強制終了して再起動すると、カスタムではなくデフォルトの背景が表示されます。何か助けはありますか?私の英語に感謝し、申し訳ありません。

4

1 に答える 1

1

editor.commit()環境設定で実際に文字列を保存するのを忘れました。

于 2012-06-19T10:55:29.183 に答える