0

I have a Fragment where I want to display a map, I did this by now, but when I call a function it throws me an unreachable error.

public class HomeFragment extends Fragment {
 private static final String TAG = "HomeFragment";
 private static final String FINE_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
 private static final String COARSE_LOCATION = Manifest.permission.ACCESS_COARSE_LOCATION;

 //vars

 private Boolean mLocationPermissionsGranted = false;
 private static final int LOCATION_PERMISSION_REQUEST_CODE = 1234;
 private GoogleMap mMap;

 @Nullable
 @Override
 public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  return inflater.inflate(R.layout.layout_home, container, false);
  getLocationPermision();
 }


 private void initMap() {
  SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
  mapFragment.getMapAsync(new OnMapReadyCallback() {
   @Override
   public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
   }
  });
 }

 private void getLocationPermision() {
  String[] permissions = {
   Manifest.permission.ACCESS_FINE_LOCATION,
   Manifest.permission.ACCESS_COARSE_LOCATION
  };

  if (ContextCompat.checkSelfPermission(this.getActivity().getApplicationContext(), FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
   if (ContextCompat.checkSelfPermission(this.getActivity().getApplicationContext(), COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    mLocationPermissionsGranted = true;
   }
  } else {
   ActivityCompat.requestPermissions(this.getActivity(), permissions, LOCATION_PERMISSION_REQUEST_CODE);
  }
 }


 @Override
 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  mLocationPermissionsGranted = false;

  switch (requestCode) {
   case LOCATION_PERMISSION_REQUEST_CODE:
    {
     if (grantResults.length > 0) {
      for (int i = 0; i < grantResults.length; i++) {
       if (grantResults[i] != PackageManager.PERMISSION_GRANTED)
        mLocationPermissionsGranted = false;
       return;
      }
      mLocationPermissionsGranted = true;

      //init map
      initMap();
     }
    }
  }
 }
}

When I try to call getLocationPermission() it throws me that

Can you please help me out?

Should I make these permissions verifications in the main activity?

In the main activity, I have a navigation bar only, and I want to work on fragments of course.

Thank you in advance!

Somesh Kumar
  • 8,088
  • 4
  • 33
  • 49
Calin Onaca
  • 175
  • 3
  • 14

1 Answers1

6
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.layout_home,container,false);

    getLocationPermision();
}

getLocationPermision(); is called AFTER your return statement. Making it unreachable.

Move it before the return statement.

veritas1
  • 8,740
  • 6
  • 27
  • 37