ANDROID - Google地图 - 无法“返回位置”;如果陈述后

问题描述:

当我的位置为空时,我的应用程序关闭。我确定这是因为该位置返回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之外的函数? –

它,因为你使用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