【问题标题】:Unreachable statement for a function in a fragment [duplicate]片段中函数的无法访问的语句[重复]
【发布时间】:2019-10-10 10:04:42
【问题描述】:

我有一个片段,我想在其中显示地图,我现在已经这样做了,但是当我调用一个函数时,它会抛出一个无法访问的错误。

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

当我尝试打电话给getLocationPermission() 时,我会发现

你能帮帮我吗?

我应该在主要活动中进行这些权限验证吗?

在主要活动中,我只有一个导航栏,当然我想处理片段。

提前谢谢你!

【问题讨论】:

    标签: java android


    【解决方案1】:
    @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(); 在您的 return 语句之后被调用。使其无法访问。

    将它移到 return 语句之前。

    【讨论】:

    • 谢谢!我会在6分钟后接受答复,非常感谢!
    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2020-05-11
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2016-03-03
    相关资源
    最近更新 更多