Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示进程对话框时,doInBackground()未被执行_Android - Fatal编程技术网

Android 显示进程对话框时,doInBackground()未被执行

Android 显示进程对话框时,doInBackground()未被执行,android,Android,我试图显示进程对话框,它按预期显示,但当它显示时,doInBackground()并没有执行,当我在emulator的屏幕上按时,doInBackground()再次开始执行 这是我的AsyncTask类: public class FetchEmployeeAsyncTask extends AsyncTask<String, Void, ArrayList<Employee> > { private CaptureActivity activity; //pri

我试图显示进程对话框,它按预期显示,但当它显示时,doInBackground()并没有执行,当我在emulator的屏幕上按时,doInBackground()再次开始执行

这是我的AsyncTask类:

public class FetchEmployeeAsyncTask extends AsyncTask<String, Void, ArrayList<Employee> >   {

private CaptureActivity activity;
//private ProgressDialog progressDialog;
public FetchEmployeeAsyncTask(CaptureActivity nextActivity) {
    this.activity = nextActivity;
}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
    /*progressDialog= new ProgressDialog(activity);
    progressDialog.setCancelable(true);
    progressDialog.setTitle("Fetching Employees!!");
    progressDialog.setMessage("Please wait...");
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setProgress(0);
    progressDialog.show();*/
}

@Override
protected ArrayList<Employee> doInBackground(String... url) {
    // TODO Auto-generated methoVoidd stub

    ArrayList<Employee> employees = null;
    for(String employeeUrl : url){
        employees = fetch(employeeUrl);
    }
    return employees;
}

private ArrayList<Employee> fetch(String url) {
    // TODO Auto-generated method stub
    ArrayList<Employee> employees = null;
    String response = null;
    try {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);

        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);
        employees = EmployeeXMLParser.employeeParser(response);
        System.out.println("Size in fetch "+employees.size());

        //System.out.println("Employee Name :: " + employees.get(0).getFirstName() + " " + employees.get(0).getLastName());
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } /*catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        System.out.println("Error parsing the response :: " + response);
        e.printStackTrace();
    }*/
    return employees;
}



@Override
public void onPostExecute(ArrayList<Employee> employees){
    super.onPostExecute(employees);

    System.out.println("in post execxute "+employees.size());
    //progressDialog.dismiss(); 
    activity.showEmployees(employees);


}
公共类FetchEmployeeAsyncTask扩展了AsyncTask{
私人捕获活动;
//私有进程对话;
公共FetchEmployeeAsyncTask(CaptureActivity nextActivity){
这个。活动=下一个触觉;
}
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
/*progressDialog=新建progressDialog(活动);
progressDialog.setCancelable(真);
progressDialog.setTitle(“获取员工!!”;
progressDialog.setMessage(“请稍候…”);
progressDialog.setProgressStyle(progressDialog.STYLE_微调器);
progressDialog.setProgress(0);
progressDialog.show()*/
}
@凌驾
受保护的ArrayList doInBackground(字符串…url){
//TODO自动生成的无效存根
ArrayList employees=null;
for(字符串employeeUrl:url){
employeeUrl=fetch(employeeUrl);
}
返回员工;
}
私有ArrayList获取(字符串url){
//TODO自动生成的方法存根
ArrayList employees=null;
字符串响应=null;
试一试{
DefaultHttpClient httpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(url);
HttpResponse HttpResponse=httpClient.execute(httpGet);
HttpEntity HttpEntity=httpResponse.getEntity();
response=EntityUtils.toString(httpEntity);
EmployeeXMLParser.employeeParser(响应);
System.out.println(“提取中的大小”+employees.Size());
//System.out.println(“员工姓名::”+employees.get(0.getFirstName()+”+employees.get(0.getLastName());
}捕获(不支持的编码异常e){
e、 printStackTrace();
}捕获(客户端协议例外e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}/*捕获(XMLPullParseRexE){
//TODO自动生成的捕捉块
System.out.println(“解析响应时出错::”+响应);
e、 printStackTrace();
}*/
返回员工;
}
@凌驾
public void onPostExecute(ArrayList员工){
super.onPostExecute(员工);
System.out.println(“在执行后”+employees.size());
//progressDialog.disclose();
活动。展示员工(员工);
}
}

我在此活动类中调用AsyncTask:

public class CaptureActivity extends Activity {


private String url = "http://192.168.2.223:8680/capture/clientRequest.do?r=employeeList&cid=0";

FetchEmployeeAsyncTask employeeAsyncTask;

private ArrayList<Employee> employees = null;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setTitle("");


     employeeAsyncTask = new FetchEmployeeAsyncTask(this);

     employeeAsyncTask.execute(new String[] {url});

    System.out.println("Status "+employeeAsyncTask.getStatus());


    setContentView(R.layout.activity_capture);

}
公共类CaptureActivity扩展活动{
专用字符串url=”http://192.168.2.223:8680/capture/clientRequest.do?r=employeeList&cid=0";
FetchEmployeeAsyncTask employeeAsyncTask;
private ArrayList employees=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
片名(“”);
employeeAsyncTask=新建FetchEmployeeAsyncTask(此任务);
execute(新字符串[]{url});
System.out.println(“状态”+employeeAsyncTask.getStatus());
setContentView(R.layout.activity\u捕获);
}

您想在这里做什么?您想从数据库中获取一些值吗?如果是,请检查url的分配,如果您传递的值正确

另外,请尝试详细解释您的问题并粘贴更多代码。

尝试以下操作:

  protected void onPreExecute() {

   progressDialog = ProgressDialog.show(currentActivity.this, "",
                "Message Here", true);
    }
   protected void onPostExecute(String str) {

   dialog.dismiss();

   }

我正在访问一个web应用程序n获取响应并尝试处理它,如果我注释掉process dialog,它工作正常..否则显示process dialog时没有运行doInBackground()…这是运行process dialog的基本方法,但我不知道您的确切问题。您能解释清楚吗?。process dialog一直显示,直到我取消process dialog,doInBackground()中的代码才被执行。这是我面临的问题。您如何执行AsyncTask?我已编辑了我的代码。move setContentView(R.layout.activity_capture);启动AsyncTaskProsper之前的行…相同的结果!!还将
employeeAsyncTask.execute(新字符串[]{url});
更改为
employeeAsyncTask.execute(url);