gpt4 book ai didi

java - Android:无法解析 AsyncTask 中的方法 'findViewById(int)'

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:43 26 4
gpt4 key购买 nike

按照教程 here我已经设置了一个应该能够从 URL 下载图像并将其放入 ImageView 的应用程序。唯一的问题是它找不到 findViewById,因为它在 Activity 类而不是 AsyncTask 类中。代码在这里:

package com.example.weather2;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ImageView;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;


public class ImageDownloader
extends AsyncTask<String, Integer, Bitmap> {
protected void onPreExecute(){
//Setup is done here
}
@Override
protected Bitmap doInBackground(String... params) {
//TODO Auto-generated method stub
try{
URL url = new URL(params[0]);
HttpURLConnection httpCon =
(HttpURLConnection)url.openConnection();
if(httpCon.getResponseCode() != 200)
throw new Exception("Failed to connect");
InputStream is = httpCon.getInputStream();
return BitmapFactory.decodeStream(is);
}catch(Exception e){
Log.e("Image", "Failed to load image", e);
}
return null;
}
protected void onProgressUpdate(Integer... params){
//Update a progress bar here, or ignore it, I didn't do it
}
protected void onPostExecute(Bitmap img){
ImageView iv = (ImageView) findViewById(R.id.imageView); //here is where the issue is
if(iv!=null && img!=null){
iv.setImageBitmap(img);
}
}
protected void onCancelled(){
}
}

当我注释掉问题所在的行时,我没有收到任何错误,这让我认为它正在运行,但我无法判断,因为没有发布图像。非常感谢解决此问题的任何帮助。

最佳答案

findViewById 是 Activity 类的一个方法。

你有

 public class ImageDownloader
extends AsyncTask<String, Integer, Bitmap> // not a activity class

如果您需要在 Activity 中返回数据,您可以使用接口(interface)作为对 Activity 的回调。

我会更新 Activity 本身的 ui。看@blackbelts 的回答

How do I return a boolean from AsyncTask?

或者

让AsyncTask成为Activity类的内部类,并在onPostExecute中更新ui

您可能还会发现 Alex Loockwood 的这篇博客很有趣

http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html

关于java - Android:无法解析 AsyncTask 中的方法 'findViewById(int)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com