我在我的应用程序中有一个Framelayout和一些TextViews,我从服务器加载数据,并设置FrameLayout的背景,使用Picasso从服务器加载Image,并以相同的方式设置TextViews。但我想用意图分享它,我无法弄清楚如何做到这一点?我必须先下载Image吗?
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);
答案 0 :(得分:0)
由于Picasso将缓存图像,您不需要在另一个活动中重新下载(只要它在同一个应用程序中)。将这些添加到您的代码中,看看是否有帮助
仅当myPlace是AsyncTask的本地时才需要执行第一步和第二步
第1步:让AsyncTask
返回MyPlace
对象
private class ClassName extends AsyncTask<..., ..., MyPlace> {
...
}
第2步:从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