1

現在、ドローアブルを文字列に変換し、このメソッドを使用して共有設定を介して別のアクティビティに渡そうとしています。loadIconDrawableです。

アクティビティ 1

try {
    ai = pm.getApplicationInfo(pInfo.packageName, PackageManager.GET_META_DATA);
} 
catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

    loadIcon = ai.loadIcon(pm);

    Log.i("Icon drawable", loadIcon.toString());
                SharedPreferences preferences = getSharedPreferences("ANALYZE_PREF", MODE_PRIVATE);
                SharedPreferences.Editor editor = preferences.edit();
                editor.putString("drawable", loadIcon.toString());
                editor.commit();

これは私がLogcatで得たものです:

11-06 10:13:28.995: I/Drawable shared(16786): android.graphics.drawable.BitmapDrawable@417f2aa8

他のアクティビティで取得しようとしています

アクティビティ 2

SharedPreferences settings = getSharedPreferences("ANALYZE_PREF", MODE_PRIVATE);
String drawableString = settings.getString("drawable", ""); 
Log.i("Drawable shared", drawableString);
Drawable drawableImage = getDrawable(drawableString);
imageView.setBackgroundDrawable(drawableImage);

       public Drawable getDrawable(String bitmapUrl) {
              try {
                URL url = new URL(bitmapUrl);
                Drawable d =new BitmapDrawable(BitmapFactory.decodeStream(url.openConnection().getInputStream()));
                Log.i("d value", "d value " + d);
                return d; 
              }
              catch(Exception ex) {
                  Log.i("Null", "Drawable returns null");
                  return null;
              }
       }

ドローアブルに戻そうとすると null が返される

ログキャット:

11-06 10:13:28.995: I/Null(16786): Drawable returns null
4

2 に答える 2

2

私もこの方法が好きな同じ問題に直面しています..

Bitmap photo = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bao = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 90, bao);
byte [] ba = bao.toByteArray();
String ba1=Base64.encodeBytes(ba);

次に、この文字列を他のアクティビティに送信します。次に、この Base64 コードをデコードします...

于 2012-11-06T05:31:17.930 に答える
1

問題は、文字列として渡しandroid.graphics.drawable.BitmapDrawable@417f2aa8てから、それをURLオブジェクトとして使用しようとしていることです。URLこのデータからを作成することはできません。

正直なところ、なぜこれをやろうとしているのかわかりません。どちらActivityのオブジェクトも同じコンテキストから実行され、同じアイコンを持っています。2番目にアイコンを取得できるのに、設定に保存してすぐにロードしようとするのはなぜActivityですか?

何らかの方法で実装を切り替える必要があります。Drawables のすべてがURLs を持っているわけではありません。

于 2012-11-06T02:34:48.900 に答える