Ich benutze den von Fedor bereitgestellten Code im folgenden Link, um den Breiten- und Längengrad von meiner einfachen Demo-App zu erhalten. Ich versuche, den Breiten- und Längengrad mithilfe der von ihm bereitgestellten MyLocation-Klasse in diesem Link abzurufen.Fortschrittsdialog wird beendet, bevor der Thread fertig ist - Android
What is the simplest and most robust way to get the user's current location on Android?
Ich versuche, die geografische Breite und Länge auf eine Schaltfläche klicken zu holen. Auf der Schaltfläche klicken, starte ich eine asynchrone Aufgabe und delegiere die Arbeit zum Abrufen von Orten an die Methode do in background meiner asynctask.
Vorausführung - Progressdialog eingeleitet. post execute - Fortschrittsdialog wurde geschlossen.
Dies ist, wie der Fortschritt Dialog in meinem Code funktionieren sollte und hier ist das Problem, das ich habe. Der Fortschrittsdialog wird korrekt gestartet, aber noch bevor der Längen- und Breitengrad in der doinbackground-Methode ausgegeben wird, wird der Fortschrittsdialog geschlossen.
Ich verstehe nicht, warum das passiert.
Hier ist meine Front-End-Aktivität
public class LocationServices extends Activity {
MyLocation myLocation = new MyLocation();
LocationResult locationResult;
TextView tv1, tv2;
Location location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
Button btn = (Button) findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new LocationAsyncTasking().execute();
}
});
}
public class LocationAsyncTasking extends AsyncTask<String, Void, Void> {
ProgressDialog dialog;
int totalAvail;
protected void onPreExecute() {
// this.dialog.setMessage("Inserting data...");
dialog = new ProgressDialog(LocationServices.this);
this.dialog.setMessage("Fetching data...");
this.dialog.show();
}
protected Void doInBackground(String... args) {
Looper.prepare();
locationResult = new LocationResult() {
public void gotLocation(Location location) {
// TODO Auto-generated method stub
// LocationServices.this.location = location;
System.out.println("Progress dialog should be present now - latitude"+location.getLatitude());
System.out.println("Progress dialog should be present now - longitude"+location.getLongitude());
}
};
myLocation.getLocation(LocationServices.this, locationResult);
return (null);
}
protected void onProgressUpdate(Integer... progress) {
}
protected void onPostExecute(Void unused) {
dialog.dismiss();
}
}
}
Ich bin ganz verwirrt, denken, was macht diesen Dialog Fortschritt verschwinden, noch bevor der SOP in doinbackground beendet ist.
Experten, bitte helfen Sie mir, dieses Problem zu verstehen und zu lösen.
Jede Hilfe in dieser Hinsicht ist sehr geschätzt.
Wir freuen uns, Mit besten Grüßen, Rony
Entschuldigung, ich kann die Methode nicht sehen, Code hier zu addieren, also paste ich es hier direkt. – user264953
final MyLocation myLocation = neu MyLocation(); \t \t final LocationResult locationResult = new LocationResult() { \t \t \t \t \t \t @Override \t \t \t public void gotLocation (Lage, Lage) { \t \t \t \t // TODO Automatisch generierte Methode Stub \t \t \t \t \t \t \t} \t \t}; \t \t \t \t btn.setOnClickListener (neu OnClickListener() { \t \t \t @Override \t \t \t public void onClick (Blick v) { \t \t \t \t myLocation.getLocation (LocationServices.this, locationResult); \t \t \t \t tv1.setText ("latitude"); // muss Breitengrad hinzufügen Ich bekomme hier \t \t \t \t tv2.setText ("Länge"); // brauchen Länge hinzuzufügen i hier \t \t \t} \t \t}); – user264953
Ich habe nach Ihrem Vorschlag, aber wie bekomme ich loc.getlat() und loc.getlon(), um die Werte auf die Textansicht, die ich habe ... auch, vor der Einstellung dieser Werte, will ich nicht Benutzer, um eine andere Aktion innerhalb der Aktivität durchzuführen .. Also, um ihn daran zu hindern und die anderen Komponenten im Hintergrund anzuzeigen, während die Lat, long ist geholt, sollte ich einen Spinner verwenden, RT? – user264953