0

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

我使用 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 方法中声明或显示对话框,它永远不会显示。有人吗?为什么它会忽略它但不能显示它?

4

2 回答 2

0

传递ContextLocationListenerin ProgressDialog

于 2012-07-11T04:56:18.677 回答
-1

检查此代码对我来说工作正常

公共类 LocationFinderActivity 扩展 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

}

}

于 2012-07-12T03:55:24.117 回答