我在MapActivity中创建了一个asynctask,这里是:
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方法没有被调用 - 为什么会这样?
答案 0 :(得分:1)
Becoz,你的AsyncTask的onPostExecute()
没有参数。这是doInBackground()
返回的。
SO正确覆盖两种方法。
类似的东西,
@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 :(得分:1)
您没有正确覆盖onPostExecute,缺少结果参数
应该是
@Override
protected void onPostExecute(String result) {
// dismiss the dialog once done
pDialog.dismiss();
}
答案 2 :(得分:0)
AsyncTask
身体。然后mouse right click
- &gt; source
- &gt; override/implement methods
。 此外,您可以通过这种方式生成构造函数,getter / setter等。