我正在使用我的主要活动内的子类来执行asynctask。我打算在事后把它移入一个单独的文件,我只是喜欢这样做,以确认它正在工作。由于等待时间可能很长,我正在尝试执行带进度对话框的HTTPRequest
。我在doInBackground()
中没有做任何事情,因为我读过你不能从那里访问UI层。最终发生的是我在onPreExecute()
上显示我的进度对话框,并在onPostExecute()
中将其解除。我在上面单独地调用每个任务,这可能是我的问题的99%,但我需要能够将我的活动传递给任务以使它们正常工作。解散asynctask中的进度对话框时,Android应用程序强制关闭
我已经把很多步骤分解成小块。我得到一个空指针异常,导致我相信我的问题来自不使用execute(),但我似乎无法弄清楚它是如何工作的。
new CodeRetrievalItem().onPreExecute(MyActivity.this);
new CodeRetrievalItem().onPostExecute(MyActivity.this);
class CodeRetrievalItem extends AsyncTask<Void, Void, Void>{
ProgressDialog dialog;
protected void onPreExecute(Activity actpass){
dialog = new ProgressDialog(actpass);
dialog.setMessage("Loading");
dialog.setIndeterminate(false);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
return null;
}
protected void onPostExecute(Activity actpass){
// Execute HTTP Request
try{
dialog.dismiss();
}
catch(Exception e){
Toast.makeText(actpass, "IOE response " + e.toString(), Toast.LENGTH_LONG).show();
}
}
}
Post logcat ... –
您是否在拨打电话后尝试拨打另一个活动 –
您必须在** doInBackground **中执行HTTP请求**而不是在** onPostExecute ** – Umesh