在OnLocationChanged中显示进度对话框

时间:2012-07-11 04:24:54

标签: android progressdialog

我知道有成千上万的问题。但我找不到我的解释。

我使用onLocationChanged方法更新mapView上用户的位置。一切安好;我在onCreate方法中显示一个ProgressDialog,并在OnlocationChanged结束时将其关闭并且它可以正常工作。

问题是当我在onLocationChanged方法中创建并显示进度对话框时。不知怎的,它不起作用。我认为这是因为该方法在不同的线程上运行。

但我的问题是,如果onLocationChanged方法在不同的线程上运行,为什么它让我解除对话但不创建新对话?

这是我班级的一部分:

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tiendas);
    mapView = (MapView) findViewById(R.id.mapview);
    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(false);

    ProgressDialog dialog = ProgressDialog.show(StoresActivity.this, "", 
    "Getting your location", true, true);


 public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub

             /////if i show or initialize the dialog here, doesn't work!

             updateMap(location)  // this function calls asynctask 
                                                 //  for an HTTPrequest
     dialog.dismiss();


        }

}

该代码正常工作并解除对话框,但如果我在onLocationChanged方法中声明或显示对话框,则它永远不会显示。任何人? 为什么它会解雇它但却无法显示它?

2 个答案:

答案 0 :(得分:0)

Context中传递LocationListener课程的ProgressDialog

答案 1 :(得分:-1)

检查此代码是否可以正常使用

public class LocationFinderActivity extends Activity实现LocationListener {

LocationManager locationManager = null; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_location_finder);

    Log.i("inside","oncreate");
    locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0,this);


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_location_finder, menu);
    return true;
}

@Override
public void onLocationChanged(Location location) {

    Log.i("inside","onlocationchange");
    ProgressDialog dialog = ProgressDialog.show(LocationFinderActivity.this, "", 
            "Getting your location", true, true);
}

@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

}

}