進行状況ダイアログに問題があり、何が間違っているのかわかりません。ローカライズボタンを押すと、私のコードは新しい AsyncTask と progressDialog を開始しますが、最終的には停止してエラーを表示します。問題は、それがしなければならないことが長すぎるためだと思います。エラーは次のとおりです。
doInBackground() の実行中にエラーが発生しました
問題は publishProgress() にあると思いますが、どこでどのように使用するのかわかりません。
ここに私のコード:
public class GPSLocation extends AsyncTask<Void, Void, Void>
{
boolean running =true;
@Override
protected void onPreExecute()
{
super.onPreExecute();
pd = new ProgressDialog(Configuracion.this);
pd.setOnCancelListener(new DialogInterface.OnCancelListener(){
public void onCancel(DialogInterface dialog) {
pd.cancel();
}
});
longitude=0;
latitude =0;
getLonLat();
pd.setCancelable(true);
pd.setMessage("Getting GPS Location...");
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.show();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
pd.setProgress(1);
// Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
}
@Override
protected void onPostExecute(Void result)
{
pd.dismiss();
}
@Override
protected Void doInBackground(Void... params) {
boolean isDataSubmitted = false;
while(!isDataSubmitted)
{
if(longitude !=0 && latitude!=0)
{
isDataSubmitted = true;
Log.d("LONGITUD", ""+longitude);
Log.d("LATITUDE", ""+latitude);
longitud.setText(String.valueOf(longitude));
latitud.setText(String.valueOf(latitude));
}
}
return null;
}
}
これは GPSLocation クラスの外にあり、Localize.setOnclicklistener(this); から呼び出されます。
@Override
public void onClick(View v){
if (v.getId() == R.id.localiza){
new GPSLocation().execute();
}
}
この方法はこちら:
public void getLonLat(){
LocationManager milocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener milocListener = new MiLocationListener();
if (milocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
milocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,milocListener);
}else if (milocManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
milocManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0, milocListener);
}
}
ありがとうございました。