代码之家  ›  专栏  ›  技术社区  ›  Jayce

位置[duplicate]上的Android Null对象引用

  •  -6
  • Jayce  · 技术社区  · 9 年前

    GPS.class

     boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
    
        if(permissionGranted)
        {
            if (GPS.sharedInstance(AppDashboard.this).canGetLocation() && GPS.sharedInstance(this).isPermissionEnabled()) {
                double lat = GPS.sharedInstance(AppDashboard.this).getLatitude();
                double lon = GPS.sharedInstance(AppDashboard.this).getLongitude();
                Log.e(TAG, "Location: " + lat + "/"+ lon);
            }
            else
            {
                Log.e(TAG, "Can't get GPS locations");
            }
        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 200);
        }
    

    我的舱单:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-feature android:name="android.hardware.location.gps" />
    

    我的日志:

    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
    at com.gpsApp.utility.GPS.getLatitude(GPS.java:113)
    

    和GPS 113级

    public double getLatitude() {
        if (_locationManager != null) {
            _latitude = _location.getLatitude();
        }
    
        return _latitude;
    }
    
    2 回复  |  直到 9 年前
        1
  •  0
  •   pleft    9 年前

    你在打电话 public double getLatitude() GPS 然而 _location 变量未初始化,因此您会得到NullPointerException。

    之前的通话 getLatitude() public Location getLastKnownLocation() 从您的 _位置

        2
  •  0
  •   Arslan Ali    9 年前

    boolean permissionGranted = ActivityCompat.checkSelfPermission(getApplicationContext, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
    

    而不是这个

     boolean permissionGranted = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;