Je construis une application qui utilise le GPS pour déterminer le pays actuel des utilisateurs. Maintenant, puisque le GPS prend un certain temps pour trouver l'emplacement, alors qu'il cherche, je veux montrer un ProgressDialog.Android ProgressDialog erreurs ennuyeuses
donc dans mon LocationListener, j'ai appelé ProgressDialog que je déclarai avant appelé
pd
Et juste en dessous de la partie où il montre que j'ai créé un fil pour faire les choses GPS. pour une raison quelconque, la ProgressDialog ne montre pas:/
Voici mon code:
pd = ProgressDialog.show(TipCalculatorActivity.this, "", "Looking for GPS satellites...");
new Thread()
{
public void run()
{
try
{
Geocoder geocoder = new Geocoder(TipCalculatorActivity.this, Locale.getDefault());
List<Address> addresses;
try {
addresses = geocoder.getFromLocation(lat, lng, 1);
countryCode = addresses.get(0).getAddressLine(2);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(TipCalculatorActivity.this, "Location is not available, please try again later.", Toast.LENGTH_LONG).show();
finish();
}
if(countryCode==null){
Toast.makeText(TipCalculatorActivity.this, "Location is not available, please try again later.", Toast.LENGTH_LONG).show();
finish();
}
Toast.makeText(TipCalculatorActivity.this, countryCode, Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
Log.e("tag",e.getMessage());
}
// dismiss the progressdialog
pd.dismiss();
}
}.start();
Quel est le problème ici ?!
Merci!
EDIT
Mon nouveau code: Où j'appelle la AsyncTask:
LocationListener onLocationChange=new LocationListener() {
public void onLocationChanged(Location loc) {
//sets and displays the lat/long when a location is provided
lat = loc.getLatitude();
lng = loc.getLongitude();
MyAsyncTask task = new MyAsyncTask(TipCalculatorActivity.this, lng, lat);
task.execute();
Toast.makeText(TipCalculatorActivity.this, "Done :D", Toast.LENGTH_LONG).show();
}
Le AsyncTask:
public class MyAsyncTask extends AsyncTask<Void, Void, Result>{
private Activity activity;
private ProgressDialog progressDialog;
private double longitude;
private double latitude;
private String countryCode;
public MyAsyncTask(Activity activity, double longitude, double latitude) {
super();
this.activity = activity;
this.longitude = longitude;
this.latitude = latitude;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
ProgressDialog.show(activity, "", "Looking for GPS satellites...");
}
@Override
protected Result doInBackground(Void... v) {
Geocoder geocoder = new Geocoder(activity, Locale.getDefault());
List<Address> addresses;
try {
addresses = geocoder.getFromLocation(latitude, longitude, 1);
countryCode = addresses.get(0).getAddressLine(2);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(activity, "Location is not available, please try again later.", Toast.LENGTH_LONG).show();
}
if(countryCode==null){
Toast.makeText(activity, "Location is not available, please try again later.", Toast.LENGTH_LONG).show();
}
Toast.makeText(activity, countryCode, Toast.LENGTH_LONG).show();
return null;
}
@Override
protected void onPostExecute(Result result) {
progressDialog.dismiss();
Toast.makeText(activity.getApplicationContext(), "Finished.",
Toast.LENGTH_LONG).show();
}
}
est le pain grillé apparaître immédiatement? – nandeesh
Regardez la réponse ci-dessous – arielschon12