0

我的应用程序中有一个 Framelayout 和一些 TextViews,我从服务器加载数据并使用 Picasso 从服务器加载的图像设置 FrameLayout 的背景,并以相同的方式设置 TextViews。但我想使用意图分享它,但我不知道该怎么做?我必须先下载图像吗?

我在 AsyncTask 中的代码:

 Picasso.with(ctx).load(myPlace.getImg()).into(new Target() {
                        @Override
                        public void onPrepareLoad(Drawable arg0) {
                            // TODO Auto-generated method stub

                        }

                        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
                        @Override
                        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) {
                            // TODO Auto-generated method stub
                            pImg.setBackgroundDrawable(new BitmapDrawable(ctx.getResources(), bitmap));


                        }

                        @Override
                        public void onBitmapFailed(Drawable arg0) {
                            // TODO Auto-generated method stub
                            Toast.makeText(ctx, "Failed Loading", Toast.LENGTH_SHORT).show();
                        }
                    });

                    pname.setText(myPlace.getName());
                    pdes.setText(myPlace.getDescription());

分享按钮:

Button shareBtn = (Button) findViewById(R.id.sharebtn);
4

1 回答 1

0

由于毕加索会缓存图像,因此您无需在另一个活动中重新下载它(只要它在同一个应用程序上)。将这些添加到您的代码中,看看是否有帮助

仅当 myPlace 是 AsyncTask 本地时才需要步骤一和二

第1步:AsyncTask返回一个MyPlace对象

private class ClassName extends AsyncTask<..., ..., MyPlace> {
    ...
}

第 2 步:返回 myPlace 对象onPostExecute

第 3 步:将值打包到包中并发送意图

Intent intent = new Intent(this, NextActivity.class)
Bundle bundle = new Bundle();
bundle.putString(IMG_URL, myPlace.getImg()); // assuming getImg returns string of url
// put name and desc in the same way
intent.addExtra(bundle);
startActivity(intent);

第 4 步:在新活动中获取值

Intent intent = getIntent();
String url = intent.getExtra().getString(IMG_URL);
// others in the smae way
于 2016-06-29T05:33:13.300 回答