android - 将可绘制对象转换为字符串以传递给另一个 Activity

标签 android bitmap drawable sharedpreferences

我目前正在尝试将可绘制对象转换为字符串,并使用此方法通过共享首选项将其传递给另一个 Activity 。 loadIcon 是一个Drawable

Activity 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

尝试在其他 Activity 中检索它

Activity 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;
              }
       }

尝试将其转换回可绘制对象时出现空值

日志:

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

最佳答案

i too face the same problem i do like this way..

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);

Then send this string to other activity. then decode this Base64 code...

关于android - 将可绘制对象转换为字符串以传递给另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243445/

相关文章:

android - 不使用位图的 Canvas 在 Android 中占用更多内存

java - 我可以使用 C++ 中的 Android NDK 创建位图并将它们快速传递给 Java 吗?

c# - 在通过网络发送之前压缩位图

android - Drawable vs Single reusable Bitmap 更好的内存?

android - 如何将 Bitmap 转换为 Drawable?

Android将动画应用于按钮背景

android - 共享元素转换在父 fragment 和子 fragment (嵌套 fragment )之间不起作用

android - 如何在 Eclipse 中将 GitHub 库包含到现有的 Android 项目中

android - 如何在 Android WebView 渲染之前修改内容?

java - 使用java代码设置RelativeLayout背景颜色