1

プロセスダイアログを表示しようとしていますが、期待どおりに表示されていますが、表示されているときに doInBackground() が実行されず、エミュレータの画面を押すと、 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);


}

}

このアクティビティ クラスで 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);

}
4

2 に答える 2

0

これを試して:

  protected void onPreExecute() {

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

   dialog.dismiss();

   }
于 2013-02-05T07:45:23.527 に答える
0

ここで何をしようとしていますか?データベースからいくつかの値を取得しようとしている場合は、値を正しく渡している場合は URL の割り当てを確認してください。

また、問題を詳細に説明し、さらにコードを貼り付けてみてください。

于 2013-02-05T07:42:06.640 に答える