0

MapActivityで非同期タスクを作成しました。これは次のとおりです。

class ReadLocations extends AsyncTask<String, String, String> {

    GeoPoint apoint1;
    GeoPoint apoint2;
    ArrayList<GeoPoint> Locations = new ArrayList<GeoPoint>(); 


    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pDialog = new ProgressDialog(MyMapLocationActivity.this);
        pDialog.setMessage("DONE");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();


    }

    protected String doInBackground(String... args) {

        return null; 
    }


    protected void onPostExecute() {
        // dismiss the dialog once done
        pDialog.dismiss();

    }

}

私はそれをこのように実行しようとしています:

public class MyMapLocationActivity extends MapActivity {

private MapView mapView;
private ProgressDialog pDialog;  
private ProgressDialog eDialog;  


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 

ReadLocations Read = new ReadLocations();
Read.execute();

 ...

制御ダイアログが消えることはありません-onPostExecuteメソッドが呼び出されていないようです-それはなぜですか?

4

3 に答える 3

1

Becoz、あなたのAsyncTaskonPostExecute()には議論がありません。これはによって返されdoInBackground()ます。

したがって、両方のメソッドを正しくオーバーライドします。

何かのようなもの、

@Override
protected String doInBackground(String... args) {  // Return type of same as argument of onPostExecute() 
    return null; 
}

@Override
protected void onPostExecute(String result) { // Add String argument in onPostExecute()
    // dismiss the dialog once done
    pDialog.dismiss();
}

doInBackground()他に作業の実装がないため、実行は可能な限り高速です。1つのreturnステートメントのみ。

于 2012-09-19T08:35:56.977 に答える
1

onPostExecuteを正しくオーバーライドしておらず、結果パラメーターがありません

それは次のようなものでなければなりません

@Override
protected void onPostExecute(String result) {
    // dismiss the dialog once done
    pDialog.dismiss();
}
于 2012-09-19T08:36:55.673 に答える
0

Eclipseで、スーパークラスのメソッドを正しくオーバーライドまたは実装するための最良かつ最も簡単な方法は次のとおりです。

  1. カーソルをAsyncTask体に合わせます。次にmouse right click-> source-> override/implement methods
  2. 必要な方法を選択してください。
  3. [OK]をクリックします。メソッドは自動的にクラスに追加されます。

また、この方法でコンストラクター、ゲッター/セッターなどを生成できます。

于 2012-09-19T09:22:57.170 に答える