2017-03-04 6 views
-1

lorsque ma position est nulle, ma force d'application se ferme. Je suis certain que c'est parce que l'emplacement renvoie null. J'ai essayé d'utiliser le code avec Mock GPS et le code fonctionne quand il passe par le "if (myLocation! = Null)". Je ne peux simplement pas "renvoyer myLocation"; après le "if (myLocation == null)"ANDROID - Google Maps - Impossible de "retourner l'emplacement"; après If Statment

S'il vous plaît aider. Je vous remercie.

@Override 
public void onMapReady(GoogleMap googleMap) { 


    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{ 
        Manifest.permission.ACCESS_FINE_LOCATION, 
        Manifest.permission.ACCESS_COARSE_LOCATION, 
        Manifest.permission.INTERNET, 
        Manifest.permission.ACCESS_NETWORK_STATE, 
        Manifest.permission.WRITE_EXTERNAL_STORAGE, 

      }, 10); 
     } 
     return; 
    } 

    gMap = googleMap; 

     if(!gMap.isMyLocationEnabled()) 
      gMap.setMyLocationEnabled(true); 

     LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 


    if (myLocation == null) { 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
     String provider = lm.getBestProvider(criteria, true); 
     myLocation = lm.getLastKnownLocation(provider); 
    } 

si j'ajoute "return myLocation;" après le "if (MyLocation == null)"

LIKE THIS

Il renvoie une erreur. IMAGE OF THE ERROR IMAGE OF THE ERROR 2

+1

Votre méthode est vide, ce qui signifie qu'il ne revient pas une valeur en retour. Vous l'avez configuré pour appeler cette méthode et lui passer quelque chose, mais cela ne retourne rien. –

+0

créez simplement une fonction et utilisez 'myLocation' pour faire ce que vous voulez faire dans cette fonction –

+0

@PavneetSingh - Fonction en dehors de l'onMapReady? –

Répondre

1

son parce que vous utilisez le retour de type void

public void onMapReady(GoogleMap googleMap) 

utilisation Type d'emplacement.

public Location onMapReady(GoogleMap googleMap) 

onMapReady public void (GoogleMap googleMap) est une méthode d'utilisation abstraite « call back », mais je peux voir que vous voulez avoir une méthode pour retourner un emplacement obj à utiliser. Il y a plusieurs façons de faire. On est d'utiliser un objet global pour stocker le résultat retourné comme:

private Location location = null; 
@Override 
public void onMapReady(GoogleMap googleMap){ 
...... 
this.location = myLocation; 
} 
public void someMethodIUseLocation(){ 
//TO CALL this.location if need to use 
} 

ne dépend que de la façon dont vous vouliez appeler la façon de mettre en œuvre est différent

+0

Bonjour, je l'ai essayé et renvoie cette erreur. S'il vous plaît voir le lien. https://i.imgur.com/4hguC8r.png @CbL –

+0

@SimoneWalter J'ai mis à jour la réponse – CbL