首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将可绘制的字符串转换为传递到另一个活动的字符串

将可绘制的字符串转换为传递到另一个活动的字符串
EN

Stack Overflow用户
提问于 2012-11-06 02:24:28
回答 2查看 6.3K关注 0票数 1

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

活性1

代码语言:javascript
运行
复制
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里得到的:

代码语言:javascript
运行
复制
11-06 10:13:28.995: I/Drawable shared(16786): android.graphics.drawable.BitmapDrawable@417f2aa8

试图在另一个活动中检索它

活性2

代码语言:javascript
运行
复制
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。

逻辑猫:

代码语言:javascript
运行
复制
11-06 10:13:28.995: I/Null(16786): Drawable returns null
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 05:31:17

我也面临着同样的问题,我喜欢这样..

代码语言:javascript
运行
复制
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代码..。

票数 2
EN

Stack Overflow用户

发布于 2012-11-06 02:34:48

问题是,您将android.graphics.drawable.BitmapDrawable@417f2aa8作为字符串传递,然后尝试将其用作URL对象。不能从此数据创建URL

老实说,我不知道你为什么要这么做。两个Activity对象都是从相同的上下文中运行的,并且具有相同的图标。为什么要尝试将其保存在首选项中,并在只获取第二个Activity中的图标时立即加载它?

您将不得不以某种方式切换您的实现;Drawables并不都有URL

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13243445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档