gpt4 book ai didi

java - Fragment 中 AsyncTask 中的 ProgressDialog 崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:59 25 4
gpt4 key购买 nike

我在 Activity 中有一个带有 AsyncTaskFragment。但当我运行搜索时出现此异常:

Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference.

这与片段不知道 Activity 是否正在运行有关,但我不知道如何修复它。请帮忙。这是代码:

class Send_API extends AsyncTask<String, Void, String> {

private ProgressDialog dialog;

@Override
protected void onPreExecute() {
if (movieList != null){
movieList.clear();
adapter.notifyDataSetChanged();
}

dialog = new ProgressDialog(getActivity());
dialog.setMessage("Searching...");
dialog.show();
}

@Override
protected String doInBackground(String... params) {
String queryString = null;
try {
queryString = "" +
"s=" + URLEncoder.encode(txt, "utf-8");
} catch (UnsupportedEncodingException e) {
}
return HttpHandler.get(params[0], queryString);
}


@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
dialog.dismiss();
if (result == null) {
Toast.makeText(getActivity(), "error getting results...", Toast.LENGTH_LONG).show();

} else {

try {
JSONObject json = new JSONObject(result);

JSONArray searchArray = json.getJSONArray("Search");

for (int i = 0; i < searchArray.length(); i++) {
JSONObject searchObject = searchArray.getJSONObject(i);
String title = searchObject.getString("Title");
String type = searchObject.getString("Type");
String year = searchObject.getString("Year");
String imdbID = searchObject.getString("imdbID");
String poster_url = searchObject.getString("Poster");
movieList.add(new Movie(title, type, year, imdbID, poster_url));

Log.e(TAG, "MovieList is " + movieList);


}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getActivity(), "error parsing results...", Toast.LENGTH_LONG).show();
}

adapter.notifyDataSetChanged();

}
}

}

最佳答案

  dialog = new ProgressDialog(getActivity());
当您初始化 Fragment 时,

getActivity() 将返回 null。您必须等到片段生命周期中的 onAttach() 才能返回非 null。

这就是 NPE 的原因。

总的来说,片段中没有非默认构造函数。仅在 onCreateView() 中设置片段 View 。

关于java - Fragment 中 AsyncTask 中的 ProgressDialog 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365401/

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