原因:java.lang.nullpointerexception:尝试对空对象引用调用虚拟方法“double android.location.location.getlatitude()”

eaf3rand  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(284)

我正在尝试创建一个社交应用程序,允许用户发布获取其位置的内容,并仅向最近的用户显示该内容。然而,在获取用户的经度和纬度时,我得到了npe错误。我不知道我的代码到底出了什么问题。以下是错误:

  1. Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'double android.location.Location.getLatitude()' on a null object reference
  2. at com.jstechnologies.helpinghands.utils.AddressUtils.getAddressFromGps(AddressUtils.java:44)
  3. at com.jstechnologies.helpinghands.ui.MyApp.getAddress(MyApp.java:30)
  4. at com.jstechnologies.helpinghands.ui.views.dashBoard.DashBoardViewModel.fetchAddress(DashBoardViewModel.java:65)
  5. at com.jstechnologies.helpinghands.ui.views.dashBoard.DashBoardActivity.onCreate(DashBoardActivity.java:64)
  6. at android.app.Activity.performCreate(Activity.java:7136)
  7. at android.app.Activity.performCreate(Activity.java:7127)
  8. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)

这是我的addressutils.java文件

  1. import android.annotation.SuppressLint;
  2. import android.app.Activity;
  3. import android.app.Application;
  4. import android.content.Context;
  5. import android.content.pm.PackageManager;
  6. import android.location.Criteria;
  7. import android.location.Geocoder;
  8. import android.location.Location;
  9. import android.location.LocationManager;
  10. import androidx.core.app.ActivityCompat;
  11. import androidx.fragment.app.Fragment;
  12. import pub.devrel.easypermissions.AfterPermissionGranted;
  13. import pub.devrel.easypermissions.EasyPermissions;
  14. public class AddressUtils {
  15. private static final int RC_LOCATION_PERMISSION = 102;
  16. @AfterPermissionGranted(RC_LOCATION_PERMISSION)
  17. public Address getAddressFromGps(Context context) throws IOException {
  18. String[] perms = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
  19. if (EasyPermissions.hasPermissions(context, perms)) {
  20. String provider;
  21. LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  22. Criteria criteria = new Criteria();
  23. provider = locationManager.getBestProvider(criteria, false);
  24. @SuppressLint("MissingPermission")
  25. Location location = locationManager.getLastKnownLocation(provider);
  26. Geocoder geocoder= new Geocoder(context, Locale.getDefault());
  27. List<android.location.Address> addresses = geocoder.getFromLocation(location.getLatitude(),location.getLongitude(), 1);
  28. Address address= new Address();
  29. //ACCORDING TO LOGCAT THIS BELOW LINE HAS ERROR I GUESS
  30. address.setLat(location.getLatitude());
  31. address.setLon(location.getLongitude());
  32. address.setCountry(addresses.get(0).getCountryName());
  33. address.setCity(addresses.get(0).getLocality());
  34. address.setState(addresses.get(0).getAdminArea());
  35. address.setPincode(addresses.get(0).getPostalCode());
  36. address.setAddressLine1(addresses.get(0).getAddressLine(0));
  37. address.setAddressLine2(addresses.get(0).getAddressLine(1));
  38. return address;
  39. } else {
  40. EasyPermissions.requestPermissions((Activity) context,"Location permissions are required",RC_LOCATION_PERMISSION,perms);
  41. return null;
  42. }
  43. }
  44. }

我想添加一些关于logcat在其他java文件上显示的错误的代码行图像(可能这不是必需的)。我需要在2天内完成这个项目,然而,我在这里结巴。请帮忙。
myapp.java
dashboardviewmodel.java
dashboardactivity.java

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题