我如何在 Fragment 中使用 AsyncTask

How can i use AsyncTask in Fragment

我正在尝试在片段中使用 AsyncTask 任务,但我无法获得价值。我在 Activity 中使用它没有问题。但我不能做片段。我怎么解决这个问题。对不起我的工程师。

这是我的错误:

03-25 11:19:19.659: E/AndroidRuntime(28730): FATAL EXCEPTION: AsyncTask #2
03-25 11:19:19.659: E/AndroidRuntime(28730): Process: com.isosoft.vale, PID: 28730
03-25 11:19:19.659: E/AndroidRuntime(28730): java.lang.RuntimeException: An error occured while executing doInBackground()
03-25 11:19:19.659: E/AndroidRuntime(28730):    at android.os.AsyncTask.done(AsyncTask.java:300)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.FutureTask.run(FutureTask.java:242)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.lang.Thread.run(Thread.java:841)
03-25 11:19:19.659: E/AndroidRuntime(28730): Caused by: java.lang.NullPointerException
03-25 11:19:19.659: E/AndroidRuntime(28730):    at com.isosoft.vale.Kayit$AsyncCallWS.doInBackground(Kayit.java:401)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at com.isosoft.vale.Kayit$AsyncCallWS.doInBackground(Kayit.java:1)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at android.os.AsyncTask.call(AsyncTask.java:288)
03-25 11:19:19.659: E/AndroidRuntime(28730):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-25 11:19:19.659: E/AndroidRuntime(28730):    ... 4 more

我想这是你崩溃的 NullPointerException,

这是你的问题行 -

private ProgressDialog dialog = new ProgressDialog(getActivity());

您可能会从 getActivity() 得到 null。您正在从哪个 state/method 执行异步任务对象?

更新答案

在您的异步任务中,您使用了 global

String URL = "http://" + global.getDBHosturl() + "/myvale/valeservis.asmx";

但正如我所见,您的 global 被初始化为

GlobalClass global = (GlobalClass) getApplicationContext();

你还有-

private GlobalClass getApplicationContext() {
    // TODO Auto-generated method stub
    return null;
}

所以基本上你的全局null,因此你得到了NPE。希望这可以帮助。

而且您似乎错误地尝试重写了这两种方法-

private GlobalClass getApplicationContext() {
    // TODO Auto-generated method stub
    return null;
}

private com.isosoft.vale.CustomAutoCompleteTextView findViewById(
        int txtModel) {
    // TODO Auto-generated method stub
    return null;
}

我认为你应该删除它们。