es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La propiedad SetCancelable(false) de DialogFragment no está funcionando.

Por favor, ayúdenme chicos. Intenté poner SetCancelable(false) en el DialogFragment pero aún no funciona.

Este es mi DialogFragment:

    public static class UsageAcessDialogFragment extends DialogFragment {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the Builder class for convenient dialog construction
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

            builder.setMessage("Conceder permiso de acceso a uso")
                    .setTitle("Permiso de acceso a uso")
                    .setCancelable(false)
                    .setPositiveButton("Permitir", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // FIRE ZE MISSILES!
                            startActivityForResult(
                                    new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS),
                                    MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
                        }
                    });

            // Create the AlertDialog object and return it
            return builder.create();
        }
    }

Gracias a aquellos que comenten.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el método setCancelable(false) está siendo llamado correctamente en la instancia AlertDialog.Builder en tu código. Sin embargo, es posible que el diálogo esté siendo cancelado por algún otro evento o acción.

    Para solucionar el problema, puedes intentar agregar un setOnCancelListener a tu instancia de AlertDialog y registrar un mensaje cuando se cancele. Esto puede ayudarte a determinar la causa de la cancelación.

    Aquí hay un ejemplo:

    public static class UsageAcessDialogFragment extends DialogFragment {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Utiliza la clase Builder para crear el diálogo de manera conveniente
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    
            builder.setMessage("Concede permiso de acceso de uso")
                 .setTitle("Permiso de acceso de uso")
                 .setCancelable(false)
                 .setPositiveButton("Permitir", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int id) {
                         // ¡DISPARA LOS MISILES!
                         startActivityForResult(
                             new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS),
                             MY_PERMISSIONS_REQUEST_PACKAGE_USAGE_STATS);
                     }
                 })
                 .setOnCancelListener(new DialogInterface.OnCancelListener() {
                      @Override
                      public void onCancel(DialogInterface dialog) {
                          Log.d("DialogFragment", "Diálogo cancelado");
                      }
                });
    
            // Crea el objeto AlertDialog y devuélvelo
            return builder.create();
        }
    }
    

    ¡Espero que esto ayude! Avísame si tienes alguna otra pregunta.

Comments are closed.