进度对话框位置监听器

时间:2013-03-26 12:44:45

标签: java android progressdialog

在我的程序中,我有一个与GPS一起使用的位置列表器,以获得用户当前的纬度/经度。

我希望在GPS获得坐标的同时实现进度对话框。

目前我在onCreate()方法中调用progressDialog然后当我的位置对象为nolonger null时,然后我不再使用progressdialog。

可悲的是,此时对话框根本没有显示。

这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



     locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

        locationListener = new GPSLocationListener();

        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

 ***** Call a new progress dialog object when the locationManager is gaining lat/long*****
 d = ProgressDialog.show(this, "GPS Posistion", "Gaining GPS posistion...", false,   true);


}

  private class GPSLocationListener implements LocationListener 
    {
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {

                ***** Once lat/long is found, dismiss the progress dialog*****
                d.dismiss();

                Double latToPass = location.getLatitude();
                Double longToPass = location.getLongitude();

                locationManager.removeUpdates(locationListener);
                locationManager = null;

                Intent changesStart = new Intent("com.example.flybaseapp.PassLatLong");
                changesStart.putExtra("passedLat", latToPass);
                changesStart.putExtra("passedLong", longToPass);
                startActivity(changesStart);

            }
        }

1 个答案:

答案 0 :(得分:0)

使用AsyncTask

    Double latToPass;
    Double longToPass;


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

new AsyncAction().execute(null, null, null);

}





    private class AsyncAction extends AsyncTask<String, Void, String> {
            public boolean status = false;
            private ProgressDialog pd;

            @Override
            protected String doInBackground(String... arg0) {
                // TODO Auto-generated method stub
                try {
                    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);    

            locationListener = new GPSLocationListener();

            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);


                    status = true;

                } catch (Exception e) {
                    // TODO: handle exception
                }

                return null;
            }

            @Override
            protected void onPostExecute(String result) {

                pd.dismiss();

            Intent changesStart = new Intent("com.example.flybaseapp.PassLatLong");
                    changesStart.putExtra("passedLat", latToPass);
                    changesStart.putExtra("passedLong", longToPass);
                    startActivity(changesStart);


                }
            }

            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
                pd = new ProgressDialog(MainActivity.this);
                pd.setMessage("loading...");
                pd.setIndeterminate(true);
                pd.setCancelable(false);
                pd.show();
            }

        }


      private class GPSLocationListener implements LocationListener 
        {
            @Override
            public void onLocationChanged(Location location) {
                if (location != null) {



                    latToPass = location.getLatitude();
                    longToPass = location.getLongitude();

                    locationManager.removeUpdates(locationListener);
                    //locationManager = null;


                }
            }