Puedo volver a usar un AlertDialog cuadro en mi android.

Puedo crear un cuadro de diálogo en el onCreateDialog() el método y en la onPrepareDialog() método, trato de cambiar el texto de la positiveButton utilizando el código siguiente.

alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, this.getString(R.string.add), new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
          //Handler code
    }
}

El onclick oyente es llegar cambiado, pero el texto del botón no cambia.

Es un bug en Android o estoy haciendo algo mal?

OriginalEl autor Sudar | 2010-07-27

2 Comentarios

  1. 22

    Una solución es sólo para forzar el botón para volver a dibujar. Por ejemplo, un botón para cancelar una operación larga podría cambiar a » OK » en completar, por ejemplo,

    Botón botón = progressDialog.getButton(ProgressDialog.BUTTON1); 
    el botón.setText("ACEPTAR"); 
    el botón.invalidate();
    Gracias. Funciona como un encanto.
    Gracias! Vale la pena destacar que si usted hace esto a los botones de un AlertDialog en onPrepareDialog, como en la pregunta, usted incluso no necesita la invalidate(). Supongo que es probablemente debido a que el diálogo no está en la pantalla en ese momento.

    OriginalEl autor user527897

  2. -1

    Esto funciona para mí

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
    
            case DIALOG_ID:
                return AlertDialog.Builder(this).setTitle(R.string.contact_groups_add)
        .setView(addView).setPositiveButton(R.string.ok,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int whichButton) {
    
                    }
                }).setNegativeButton(R.string.cancel,
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int whichButton) {
                    }
                }).create();
        }
        return null;
    }
    Ustedes tienen este código en onCreateDialog() o en onPrepareDialog() ?
    En ninguno de ellos. Yo no reutilizar los métodos de la actividad. Este código simplemente se muestra un cuadro de diálogo de aviso con el punto de vista de addView (inflado previo).
    Entiendo que este código. Pero mi pregunta era diferente. Yo ya uso onCreateDialog() y onPrepareDialog() funciones. He creado el cuadro de diálogo en el onCreateDilaog() método, pero cuando trato de cambiar el texto de la positiva en el botón de onPrepareDialog() es sólo cambiar el onClickListener y no el texto.
    Usted puede fácilmente adaptar mi ejemplo a sus necesidades. Simplemente llame a .create(); en lugar de show() y volver en su onCreateDialog método de la Dialog creado por el código.
    Mi onCreateDialog() código funciona correctamente sin ningún problema. Mi problema es que cuando intento cambiar el texto de la positiva en el botón de onPrepareDialog (), utilizando el setButton() método, el texto no es cambiado. La razón por la que estoy haciendo en onPreapareDialog() es que onCreateDialog() será llamado una sola vez cuando el diálogo se crea por primera vez. Quiero volver a usar el mismo cuadro de diálogo, pero sólo cambiar el texto de la positiva botón de «Agregar» a «Editar». Cuando me puse el texto usando el setButton método, es no tener cambio.

    OriginalEl autor Pentium10

Dejar respuesta

Please enter your comment!
Please enter your name here