gpt4 book ai didi

Android 异步任务错误

转载 作者:行者123 更新时间:2023-11-29 19:05:14 25 4
gpt4 key购买 nike

我开发了一个必须检索 mysql 数据库信息的应用程序,当我执行我的应用程序时,它可以工作,但在显示 ListView 时会阻塞。

这是我的代码

public class search_ville extends Activity {
static String purl;
public static ArrayList < etablissement > Lesetab = new ArrayList < > ();
private ListView lvH;
public static etablissement etabSELECT;
private ProgressDialog progressDialog;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_ville);
lvH = (ListView) findViewById(R.id.listViewH);
chargerJeuDessaie();
rafraichirListView();

lvH.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView < ? > parent, View view, int position, long hid) {
afficherDesc(parent, view, position, hid);
}
});
}

public void afficherDesc(AdapterView < ? > parent, View view, int position, long hid) {
search_ville.etabSELECT = (etablissement) parent.getItemAtPosition(position);
Intent intent = new Intent(getApplicationContext(), DetailEtab.class);
startActivity(intent);
}

private void chargerJeuDessaie() {
progressDialog = progressDialog.show(this, "Gestion des etabs", "Telechargement en cours");
MonAsyncTaskHttp monAsyncTaskHttp = new MonAsyncTaskHttp() {

@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
search_ville.Lesetab.clear();
try {
JSONArray jsonArray = new JSONArray(o.toString());
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
etablissement etab = etablissement.factoryEtab(jsonObject);
search_ville.Lesetab.add(etab);

rafraichirListView();

}
} catch (JSONException e) {
e.printStackTrace();
}
progressDialog.dismiss();
}
};
monAsyncTaskHttp.execute("requete=getLesetablissement");
}
public void rafraichirListView() {
ArrayAdapter < etablissement > etablissementsadapter = new ArrayAdapter < etablissement > (search_ville.this, android.R.layout.simple_list_item_1, Lesetab);
lvH.setAdapter(etablissementsadapter);
}
}

错误日志:

04-22 16:45:48.815 21234-21234/ddec.applicationddec E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at ddec.applicationddec.search_ville$2.onPostExecute(search_ville.java:68)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)

如果有人可以解释如何纠正这个问题

最佳答案

您在 onPostExecute 方法中收到 NullPointerException。据我所知,jsonArray 和 Lesetab 没问题。所以对象 o 可能为 null。

-更新-根据您提供的 doInBackground 方法代码,我认为抛出了 IOException,但您没有注意到它,因为您捕获了它而没有正确处理它。字符串 chainejson 保持为 null 并返回。然后使用 null 作为参数调用 onPostExecute。这会导致 NullPointerException。

要找出真正出了什么问题,可以记录 IOException。

关于Android 异步任务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43560584/

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