2012-01-18 14 views
47

Creé un AlertDialog que funciona bien. Está desapareciendo, si presiono:
1) de escape botón del teclado o
2) de nuevo el botón del ratón usando
para que se quede centrado, incluso en las condiciones anteriormente indicadas, que había añadido '.setCancelable (falsa)' declaración mientras que la construcción . Pero, todavía veo el diálogo desapareciendo. ¿Dónde está el problema? Por favor ayuda.
El método setCancelable (falso) de AlertDialog no funciona

Código añadido:

return new AlertDialog.Builder(getActivity()) 
       .setIcon(R.drawable.alert_dialog_icon) 
       .setTitle(title) 
       .setCancelable(false) 
       .setPositiveButton(R.string.alert_dialog_ok, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          ((FragmentAlertDialog)getActivity()).doPositiveClick(); 
         } 
        } 
       ) 
       .setNegativeButton(R.string.alert_dialog_cancel, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          ((FragmentAlertDialog)getActivity()).doNegativeClick(); 
         } 
        } 
       ) 
       .create(); 


Env: Android 4.0 en XP Profesional.

+0

Por favor, publique un código. – Spencer

+0

¿puedes subir tu código? – Lucifer

+0

'.setCancelable (falso)' está en la cuarta línea del código. – San

Respuesta

97

¿Es this su código completo? a continuación, por favor, cambie su código para establecer setCancelable(false) como esto

void showDialog() { 
    DialogFragment newFragment = MyAlertDialogFragment.newInstance(
      R.string..alert_dialog_two_buttons_title); 
    newFragment.setCancelable(false); 
    newFragment.show(getFragmentManager(), "dialog"); 
} 
+0

Sí, el fragmento de código proviene del enlace señalado por usted. – San

+0

has probado el código anterior? Fue esto útil? – Sandy

+0

Sí, ayudó. Muchas gracias por tu respuesta. En realidad, estaba redactando una respuesta y mientras tanto habías publicado la tuya. – San

4

Otro ejemplo de trabajo:

Paso 1

Crear clase:

public class DialogActivity extends android.app.DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setMessage(R.string.myMessage); 
     setCancelable(false); 
     return builder.create(); 
    } 
} 

Paso 2

Agregar método para su Activity:

private boolean showDialog() { 
    FragmentManager manager = getFragmentManager(); 
    DialogActivity dialogActivity; 
    dialogActivity = new DialogActivity(); 
    dialogActivity.show(manager, "DialogActivity"); 
    return true; 
} 

Paso 3

llamada showDialog() cuando se necesita para mostrar de diálogo

8

Su diálogo se establece en no cancelable, pero el fragmento de acogida sigue siendo cancelable Establezca su fragmento con setCancelable(false).

0
dialog.setCanceledOnTouchOutside(false); 

setCanceledOnTouchOutside(boolean)

Establece si este diálogo se cancela cuando se toca fuera de los límites de la ventana. Si se establece en verdadero, el diálogo se establece para ser cancelable si no está configurado.

Cuestiones relacionadas