gpt4 book ai didi

java - 使用重写方法之外的值会导致 null

转载 作者:行者123 更新时间:2023-12-01 09:24:25 24 4
gpt4 key购买 nike

在我的 Post 类中,在 saveBitmap 方法中,我使用界面中的方法转到 URL 并将图像检索到位图中,然后返回它。它工作正常,它确实检索了位图,但如果我尝试在接口(interface)方法之外使用 bitmap[0](如图 1 所示),它会说它为空。

因此,每当我必须处理检索到的值时,它都必须在方法内部,并且由于某种原因它不会让我将其取出。接下来的另一个问题(我认为可能是相关的)是我需要重写 onDownloadComplete 方法两次。在我的 Post 类的最底部,您可以看到它再次被空的主体覆盖。我这样做只是为了让我实现 onDownloadImageListener 的 Post 类的最上面一行不会出现红线。

我不知道如何解决这个问题,我希望能够检索监听器方法之外的值。

课后:

public class Post extends Fragment implements OnDownloadImageListener {
...
private void saveBitmap(String userName, String key){
DownloadImage downloadImage = new DownloadImage();
final Bitmap[] bitmap = new Bitmap[1];
final String url = "https://graph.facebook.com/" + key + "/picture?type=large";

downloadImage.execute(url);
downloadImage.setOnDownloadImageListener(new OnDownloadImageListener() {
@Override
public void onDownloadComplete(Bitmap bmap) {
bitmap[0] = bmap;
}
});
//**FIGURE 1**
}

@Override
public void onDownloadComplete(Bitmap bmap) { //I need this otherwise it gives me an error on the top line where I have "implements OnDownloadImageListener"

下载图像类:

public class DownloadImage extends AsyncTask<String, Void, Bitmap> {

private OnDownloadImageListener listener;

@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Bitmap doInBackground(String... URL) {

String imageURL = URL[0];

Bitmap bitmap = null;
try {
// Download Image from URL
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}

@Override
protected void onPostExecute(Bitmap result) {
if(listener!=null){
listener.onDownloadComplete(result);
}
}

public void setOnDownloadImageListener(OnDownloadImageListener listener){
this.listener=listener;
}
}

最后,我的界面/监听器:

public interface OnDownloadImageListener {
void onDownloadComplete(Bitmap bmap);
}

最佳答案

您应该将其(指实现 OnDownloadImageListener 接口(interface)的 Post 类)传递到 DownloadImage 对象 downloadImage 的 setOnDownloadImageListener 方法中。

public class Post extends Fragment implements OnDownloadImageListener {
...
private void saveBitmap(String userName, String key){
DownloadImage downloadImage = new DownloadImage();
final Bitmap[] bitmap = new Bitmap[1];
final String url = "https://graph.facebook.com/" + key + "/picture? type=large";

downloadImage.execute(url);
downloadImage.setOnDownloadImageListener(this);
//**FIGURE 1**
}

@Override
public void onDownloadComplete(Bitmap bmap) {
bitmap[0] = bmap; //fixed the variable error
}

关于java - 使用重写方法之外的值会导致 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39950578/

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