1

クラスをdouble使用して2つの値を取得したいのですが、この間にどのようにすればよいかを示す必要があります.誰かがこれを行うのを手伝ってください.asynctaskprogress-dialog

ここに私のコードがあります

    public class MyAsyncTask extends AsyncTask<double, int, double>{

        private Activity activity;
        private ProgressDialog progressDialog;

        private double lon;
        private double lat;

public MyAsyncTask(Activity activity, double longitude, double latitute) {
            super();
this.activity = activity;
this.lon = longitude;
this.lat = latitute;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(activity, "Loading", "Loading", true);
}

protected double doInBackground(double... v) {
//do your stuff here
    if(lat==0.0&&lon==0.0)
return null;

}

@Override
protected void onPostExecute(Result result) {
progressDialog.dismiss();
MyAsyncTask task = new MyAsyncTask(MainActivity.this, gps.getLatitude(), gps.getLongitude());
task.execute();
Toast.makeText(activity.getApplicationContext(), "Finished.", 
        Toast.LENGTH_LONG).show();
}


}
4

2 に答える 2

2

ダブルスはいくつでも渡すことができます。

asyncTask.execute(double1, double2);

そして、非同期タスク内で、次のような方法でそれらにアクセスできます。

private class MyAsyncTask extends AsyncTask<Double, Integer, Result> {
     Result result=null;
     protected Result doInBackground(Double... doubles) {
         // Getting your doubles
         double1 = doubles[0];
         double2 = doubles[1];

         // Triggers the execution of onProgressUpdate()
         publishProgress((int) double1);

         result = new Result();
         result.setLat(/*Your lat value.*/);
         result.setLon(/*Your lon value.*/);
         return result;
     }

     protected void onProgressUpdate(Integer... progress) {
         // Update your UI with the current progress.
     }

     protected void onPostExecute(Result result) {
         Double lat = result.getLatitude();
         Double lon = result.getLongitude();

         // Do anything after doInBackground() is completed
     }
 }

これがあなたが望んでいたものかどうか教えてください。

編集:

class Result {
public lat;
public lon;

public Result(){
}

// Your getters and setters will be declared here.
}
于 2013-06-27T11:34:34.243 に答える
0

このように渡すこともできます..

private class MyAsyncTask extends AsyncTask<Void, Void, Void> {

public MyAsyncTask(int number) {
    super();
    // do stuff
}

// doInBackground() 
// onPostExecute(), ect

}

他のクラスを呼び出す方法と同じようにこれを呼び出します..

new MyAsyncTask(number).execute(maybe_other_params);
于 2013-06-27T11:40:35.860 に答える