2017-03-04 49 views
-1

當我的位置爲空時,我的應用程序關閉。我確定這是因爲該位置返回null。我嘗試使用Mock GPS代碼並在代碼通過「if(myLocation!= null)」時運行。我不能「返回我的位置」;之後的「if(myLocation == null)」ANDROID - Google地圖 - 無法「返回位置」;如果陳述後

請幫忙。謝謝。

@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); 
    } 

如果我添加「return myLocation;」在 「如果(myLocation == NULL)」

LIKE THIS

後,它返回一個錯誤。 IMAGE OF THE ERROR IMAGE OF THE ERROR 2

+1

你的方法是無效的,這意味着它不會返回一個值回來。你已經設置了調用這個方法並傳遞一些東西給它,但是它不會返回一些東西。 –

+0

只需創建一個函數並使用'myLocation'在該函數中執行任何你想做的事情 –

+0

@PavneetSingh - onMapReady之外的函數? –

回答

1

它,因爲你使用void類型的返回

public void onMapReady(GoogleMap googleMap) 

使用的地區。

public Location onMapReady(GoogleMap googleMap) 

公共無效onMapReady(GoogleMap的GoogleMap的)是一個抽象的「回調」使用方法,但我可以看到你想擁有返回一個位置OBJ的使用方法。有幾種方法可以做。 一種是使用全局對象來存儲,如返回的結果:

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

只是取決於你如何想打電話來實現的方式是不同的

+0

你好,我試過並返回這個錯誤。請參閱鏈接。 https://i.imgur.com/4hguC8r.png @CbL –

+0

@SimoneWalter我更新了答案 – CbL