サーバがGoogleマップ上のアドレスを検索しているときに進捗ダイアログを表示したい場合は、そのダイアログが消えます。私はそれをgoogledと結果の大部分は、AsyncTaskについて話しているが、私はまだdoInBackground関数のパラメータとonPreExecute()とonPostExecute()の使用法について混乱している。誰かがそれについて私にいくつかの解決策を教えてくれますか?私は本当に助けていただきありがとうございます。AsyncTaskでGoogleマップを検索中に進捗ダイアログを表示する
protected void mapCurrentAddress() {
String addressString = addressText.getText().toString();
Geocoder g = new Geocoder(this);
List<Address> addresses;
try {
addresses = g.getFromLocationName(addressString, 1);
if (addresses.size() > 0) {
address = addresses.get(0);
List<Overlay> mapOverlays = mapView.getOverlays();
AddressOverlay addressOverlay = new AddressOverlay(address);
mapOverlays.add(addressOverlay);
mapView.invalidate();
final MapController mapController = mapView.getController();
mapController.animateTo(addressOverlay.getGeopoint(), new Runnable() {
public void run() {
mapController.setZoom(12);
}
});
useLocationButton.setEnabled(true);
} else {
// show the user a note that we failed to get an address
alert(this, addressString);
}
} catch (IOException e) {
// show the user a note that we failed to get an address
e.printStackTrace();
}
}
private class SearchAddress extends AsyncTask<Void, Void, Void> {
private final ProgressDialog dialog = new ProgressDialog(AddLocationMapActivity.this);
// can use UI thread here
@Override
protected void onPreExecute() {
this.dialog.setTitle("Checking");
this.dialog.setMessage("Contacting Map Server...");
this.dialog.show();
}
// automatically done on worker thread (separate from UI thread)
@Override
protected Void doInBackground(Void... params) {
try {
mapCurrentAddress();
}
catch(Exception e) {
Log.e("DEBUGTAG", "Remote Image Exception", e);
}
return null;
}
// can use UI thread here
@Override
protected void onPostExecute(Void res) {
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
@Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
}
// this is the click event
mapLocationButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
new SearchAddress().execute(); // crash during doing the doInBackground
//mapCurrentAddress(); // work perfectly
}
});
進捗状況ダイアログがポップアップした後にアプリケーションがクラッシュしますか?
チェック[この](のhttp:// WWW .technotalkative.com/android-google-image-search-api-example-json-parsing-web-api-call-demo /)と[this](http://www.technotalkative.com/loading-remote-images /)実際的な例。 –