gpt4 book ai didi

java - AsyncTask nullPointerException 按后退按钮

转载 作者:行者123 更新时间:2023-11-30 02:48:44 25 4
gpt4 key购买 nike

这是我的情况。我有这个 AsyncTask:

private class Logo extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {

try {
// Connect to the web site
Document document = Jsoup.connect(BLOG_URL).get();
// Using Elements to get the class data
// Locate the src attribute
for(Element img : document.select("div.col-1-1 .image img[src]")) {
String ImgSrc = img.attr("src");
// Download image from URL
InputStream is = new java.net.URL(ImgSrc).openStream();
//add Bitmap to an array
bitmap.add(BitmapFactory.decodeStream(is));
}
} catch (IOException e) {
e.printStackTrace();
Log.e("ESEMPIO", "ERRORE NEL PARSING DELLE IMMAGINI");
}
return null;
}

@Override
protected void onPostExecute(Void result) {

ParsingAdapterCategorie adapter = new ParsingAdapterCategorie(getActivity(), titoli, bitmap, data);
lista.setAdapter(adapter);

}
}

如果我按下后退按钮,它会崩溃并显示如下日志错误:

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:166)

我认为这是因为 Activity 结果为空。我能做什么?

最佳答案

基本上,您必须将 onPostExecute() 的代码放在 if(getActivity() != null)... 中,以防止出现旋转屏幕等情况。

但是你从哪里开始你的 AsyncTask execute()?您必须尊重 fragment 的生命周期...例如,您应该在 Fragment.onActivityCreated()Fragment.onResume()..NOT 上调用它Fragment.onCreate() 因为此时 Activity 还没有附加..因此 getActivity() 将始终为 NULL

关于java - AsyncTask nullPointerException 按后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574733/

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