2013-07-16 3 views
1

J'ai un problème, j'ai un bouton et quand j'appuie sur le bouton -> button.setOnclickListener -> je vais obtenir l'emplacement GPS actuel. Mais quand je n'appuie pas sur le bouton et que je veux obtenir l'emplacement quand mon application est en cours d'exécution, c'est faux. Je ne comprends pas. Ceci est le code pour le boutonComment obtenir l'emplacement GPS actuel dans Android?

btn.setOnClickListener(new View.OnClickListener() { 

@Override 
public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    getAdd(); 
} 

});

public void getAdd() 
{ 
    Location currentLocation = mLocationClient.getLastLocation(); 

      Geocoder geocoder = new Geocoder(context, Locale.getDefault()); 
     // Location location = params[0]; 
      List<Address> addresses = null; 
      try { 
       addresses = geocoder.getFromLocation(currentLocation.getLatitude(), 
         currentLocation.getLongitude(), 1); 
      } catch (IOException exception1) { 
       exception1.printStackTrace(); 
      } catch (IllegalArgumentException exception2) { 
       exception2.printStackTrace(); 
      } 
      if (addresses != null && addresses.size() > 0) { 
       Address address = addresses.get(0); 
       String addressText = context.getString(
         R.string.address_output_string, 
         address.getMaxAddressLineIndex() > 0 ? address 
           .getAddressLine(0) : "", 
         address.getLocality(), 
         address.getCountryName()); 
       mAddress.setText(addressText); 
      } 
} 

C'est vrai. Mais quand j'appelle getAdd() fonction lorsque mon application en cours d'exécution. Textview mAddress.setText (addressText) false. Si j'appuie sur le bouton, ce sera vrai. Que puis-je faire pour obtenir mon adresse lorsque l'application est lancée pour la première fois?

+2

Exécutez la fonction getAdd() dans votre méthode onCreate()? – Razgriz

+0

oui, je veux mon textview setText mon adresse lorsque l'application fonctionne –

Répondre

0

Si je comprends bien, l'adresse à afficher lors de la première exécution de l'application est-elle correcte? Une façon de faire est d'appeler la fonction getAdd() que vous avez créée dans votre fonction onCreate(), de cette façon, lorsque votre application s'exécute, l'adresse sera déjà affichée dans votre textView.

+0

oui, je veux obtenir l'adresse dans mon onCreate(), ne pas besoin d'appuyer sur le bouton –

+0

aidez-moi :(je ne peux pas obtenir l'adresse dans mon OnCreate() –

+0

il suffit de mettre 'getAdd();' dans onCreate(), de préférence à la fin de la fonction – Razgriz

0
public class MyLocationListener implements LocationListener { 
     public void onLocationChanged(Location location) { 
      mMap.clear(); 
      if(!mProgress.isShowing()) 
      { 
      mProgress.show(); 
      } 
      LatLng lat=new LatLng(location.getLatitude(), location.getLongitude()); 
      mopt.position(lat); 
      mopt.title("Loading...").snippet("").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(lat,14.0f)); 
      myMarker=mMap.addMarker(mopt); 
      myMarker.showInfoWindow(); 

     new ReverseAddress(getBaseContext()).execute(lat); 

     } 
     public void onStatusChanged(String s, int i, Bundle b) {    
     } 
     public void onProviderDisabled(String s) { 
     } 
     public void onProviderEnabled(String s) {    
     } 
    } 

Utilisez cette méthode pour obtenir l'emplacement actuel de l'emplacement actuel. Pour utiliser cette utilisation de code

//  Location Manager 
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

        locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER, 
            MINIMUM_TIME_BETWEEN_UPDATE, 
            MINIMUM_DISTANCECHANGE_FOR_UPDATE, 
            new MyLocationListener() 
        ); 
+0

cela ne fonctionne pas –

Questions connexes