【问题标题】:Android show progress dialog while waiting for locationAndroid在等待位置时显示进度对话框
【发布时间】:2013-07-14 08:41:16
【问题描述】:

我正在使用此示例开发基于位置的应用程序:http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

但是当我打开手机时,该位置在那个时刻不可用。所以我想在等待位置时显示进度对话框。想在后台使用 AsyncTask 执行此操作。

您能否提供任何想法如何以及在何处执行此操作?

【问题讨论】:

    标签: android android-location


    【解决方案1】:

    不需要AsyncTask,因为Location服务已经在不同的进程中运行,只需实现LocationListener并在resume方法上注册它,在onCreateActivity中检查location是否为null,显示ProgressDialog,在@ 987654323@设置位置并关闭ProgressDialog

    【讨论】:

      【解决方案2】:

      实现 locationListner 接口并启动您的等待对话框覆盖 onlocation 更改方法,然后取消对话框,一切顺利。

      公共类 MainActivity 扩展 Activity 实现 LocationListener{

      ProgressDialog dialog;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          //-------------------- Start your GPS Reading ------------------ //
          dialog = new ProgressDialog(this);
          dialog.setMessage("Please wait!");
          dialog.show();
      
      }
      @Override
      public void onLocationChanged(Location arg0) {
          dialog.dismiss();
      }
      
      @Override
      public void onProviderDisabled(String provider) {
          // TODO Auto-generated method stub
      
      }
      
      @Override
      public void onProviderEnabled(String provider) {
          // TODO Auto-generated method stub
      
      }
      
      @Override
      public void onStatusChanged(String provider, int status, Bundle extras) {
          // TODO Auto-generated method stub
      
      }
      

      【讨论】:

        【解决方案3】:

        将 ProgressDialog 放在 onPreExecute 中,示例代码如下:

        private ProgressDialog progressdialog;
        
        @Override
        protected void onPreExecute(){ 
           super.onPreExecute();
                progressdialog = new ProgressDialog(yourContext);
                progressdialog.setMessage("Loading...");
                progressdialog.show();    
        }
        
        @Override
        protected void onPostExecute(){
           super.onPostExecute();
                progressdialog.dismiss();
        }
        

        【讨论】:

        • 我把这个放在哪里?在我的 MainActivity 中?因为我想展示这个直到我得到我的位置!当我得到纬度和经度时,我想禁用对话框
        猜你喜欢
        • 1970-01-01
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多