gpt4 book ai didi

java - 从处理程序调用时,asynctask 未获取 arraylist

转载 作者:太空狗 更新时间:2023-10-29 15:11:35 25 4
gpt4 key购买 nike

我正在使用处理程序来启动异步任务,但这样做时,我的应用程序崩溃了。我被卡住的原因是因为如果我通过其他任何东西(例如 onClickListener)启动 asynctask,那么我可以运行它很多次,一遍又一遍,而且它每次都能完美运行。一旦我从我的处理程序执行 asynctask,它就会立即使应用程序崩溃并出现 NullPointerException。

我的处理程序看起来像这样

  public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
handler.post(new Runnable() {
@Override
public void run() {
new sortNearby().execute();
}

});
}
};

这是显示异常的应用程序堆栈跟踪的一部分

Caused by: java.lang.NullPointerException
at badams.android.app.fragments.MainMenu_NearbyFragment$sortNearby.doInBackground(MainMenu_NearbyFragment.java:100)

我的代码第100行是doInBackground下asynctask的第一行

protected String doInBackground(String... args) {
for (int i = 0; i < global.places.size(); i++) { //this is line 100

我知道异常很可能来自“global.places.size()”可能为 null,但我仍然不明白为什么它只在从处理程序调用时才这样做,因为如果我开始它就可以正常工作来 self 代码的任何其他部分的任务。

编辑

应@Raghunandan 的要求,这是我的异步任务中 doInBackground 的整个代码块,它计算“地点”与用户之间的距离:

class sortNearby extends AsyncTask<String, Place, String> {
protected String doInBackground(String... args) {
for (int i = 0; i < global.places.size(); i++) { //THIS IS LINE 100
Location locationA = new Location("place");
locationA.setLatitude(global.places.get(i).getLatitude());
locationA.setLongitude(global.places.get(i).getLongitude());
Location locationB = new Location("user");
locationB.setLatitude(global.applicationLocationManager.getLatitude());
locationB.setLongitude(global.applicationLocationManager.getLongitude());
float dist = locationA.distanceTo(locationB);
dist = dist / 1000;
global.places.get(i).setDistance(dist);
}
return null;
}

编辑 2

global 是一个扩展 Application 的类,在 Activity 中定义如下:

global = (ApplicationGlobal) getActivity().getApplicationContext();

最佳答案

如果 NullPointerException 位于第 100 行,则 globalglobal.places 返回 null

你试过调试吗?

调试将帮助您了解正在发生的事情。

另外,从处理程序中我没有看到您的 doInBackground 方法是如何被调用的?

global 变量在哪里定义?何时何地初始化?

关于java - 从处理程序调用时,asynctask 未获取 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073996/

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