Android 如何在异步任务中实现此映像视图?
我将一个url传递给一个活动,我试图从url全屏显示图像,但是它引发了一个主网络线程异常 从我所能找到的情况来看,我相信我必须将该方法放在异步任务中,但是我似乎根本无法理解它。那么,我如何将此方法放入异步任务中呢 FullScreenImageView.javaAndroid 如何在异步任务中实现此映像视图?,android,asynchronous,imageview,Android,Asynchronous,Imageview,我将一个url传递给一个活动,我试图从url全屏显示图像,但是它引发了一个主网络线程异常 从我所能找到的情况来看,我相信我必须将该方法放在异步任务中,但是我似乎根本无法理解它。那么,我如何将此方法放入异步任务中呢 FullScreenImageView.java public class FullscreenImageView extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {
public class FullscreenImageView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra("SelectedImageURL");
try {
ImageView i = (ImageView)findViewById(R.id.imgView);
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());
i.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
将网络任务放入AsyncTask的
doInBackground()
方法中,如下所示:
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
try {
//ImageView i = (ImageView)findViewById(R.id.imgView);Put this line in onPreExecute() method
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(url).getContent());
// i.setImageBitmap(bitmap);//and this one on postExecute() method
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
应该是这样的。 在
doInBackground
中获得图像,在onPostExecute
中设置图像
private class DownloadFilesTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... urls) {
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream((InputStream)new URL(urls[0]).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
ImageView i = (ImageView)findViewById(R.id.imgView);
i.setImageBitmap(bitmap);
}
}
使用findViewById()初始化yourImageView
后使用
将代码> BitmapFactory。解码流<代码>进入doIn后台返回位图,在OnPASTROST中,将此位图设置为“塞尔文的可能副本”,请查看并考虑投票,如果您喜欢:-)塞尔文抱歉,但无法理解。reason@SpiderMan这就是生活,事情有升有降。这一切都在oncreate方法中吗?不幸的是,当我单击时,在空对象引用上显示“尝试调用虚拟方法”void android.widget.ImageView.setImageBitmap(android.graphics.Bitmap)”,当你单击什么时?从该错误中,我可以假设你的活动中缺少了什么,导致ImageView为空。我在您的代码中看不到setContentView,所以可能这就是缺少的内容。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url = getIntent().getStringExtra("SelectedImageURL");
new DownloadFilesTask ().execute(url);
}
Picasso.with(context).load(url).into(yourImageView)