我如何在 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;
}
我认为你应该删除它们。
我正在尝试在片段中使用 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;
}
我认为你应该删除它们。