首页 > 解决方案 > 当我启用位置单击确定按钮时,OnAtivity 导致片段对我不起作用

问题描述

我启用了位置,但是当我单击确定并取消按钮时,onActivityresult 没有调用任何指南

这是我的代码,当我单击“确定”按钮时,此功能启用位置,它工作正常,但我需要“确定”按钮,我转到另一个片段,当我单击取消时,它仍然在活动中工作,但在片段中不起作用

 public void  locationsettings()
{
    LocationRequest request=new LocationRequest().setFastestInterval(1500).setInterval(3000).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationSettingsRequest=new LocationSettingsRequest.Builder().addLocationRequest(request);
    Task<LocationSettingsResponse>responseTask= LocationServices.getSettingsClient(getContext()).checkLocationSettings(locationSettingsRequest.build());

    responseTask.addOnCompleteListener(new OnCompleteListener<LocationSettingsResponse>() {
        @Override
        public void onComplete(@NonNull Task<LocationSettingsResponse> task) {
            try {
               LocationSettingsResponse response= task.getResult(ApiException.class);

            }catch (ApiException e)
            {

                switch(e.getStatusCode())
                {
                    case LocationSettingsStatusCodes
                         .RESOLUTION_REQUIRED:
                        try {

                            ResolvableApiException resolvableApiException=(ResolvableApiException)e;
                            resolvableApiException.startResolutionForResult(getActivity(),REQUEST_LOCATION);
                            Toast.makeText(getContext(),"resolution",Toast.LENGTH_SHORT).show();


                        }catch (IntentSender.SendIntentException ex)
                        {
                            ex.printStackTrace();
                        }
                        catch (ClassCastException e1)
                        {

                        }
                        break;
                    case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                    {
                        Toast.makeText(getContext(),"okk",Toast.LENGTH_SHORT).show();
                        break;
                    }


                }
            }

        }
    });
}


@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode,resultCode,data);


    if(requestCode==REQUEST_LOCATION&&requestCode==RESULT_OK)
    {
        switch (resultCode) {

            case RESULT_OK:
                // All required changes were successfully made
                Toast.makeText(getContext(), "Ok_PRESSED", Toast.LENGTH_SHORT).show();

                break;
            case RESULT_CANCELED:
                // The user was asked to change settings, but chose not to
                Toast.makeText(getContext(), "Cancel_PRESS", Toast.LENGTH_SHORT).show();

                break;
            default:
                break;

        }
    }




}

标签: javaandroidandroid-studiolocation

解决方案


这对我有用,我用了这个 startIntentSenderForResult(resolvableApiException.getResolution().getIntentSender(), REQUEST_LOCATION, null, 0, 0, 0, null);

代替

resolvableApiException.startResolutionForResult(getActivity(),REQUEST_LOCATION);


推荐阅读