He estado desarrollando una aplicación para Android.

Me gustaría ocultar el botón OK después de que el usuario presiona, la ventana de diálogo permanecerá en primer plano por algunos segundos, mientras que un cálculo se lleva a cabo.

Este es el código:

    new AlertDialog.Builder(this)
    .setMessage("This may take a while")
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {                
        @Override
        public void onClick(DialogInterface dialog, int which) {
                       //hide the OK button - how?
                       //a lot of computation
        }
    })
    .show(); 

¿Cómo puedo lograr esto?

P. S.: no soy interesante para las técnicas más avanzadas para manejar un cálculo (tales como: cuadros de diálogo de progreso, multi-threading).

Gracias.

Si pretendes hacer un largo cálculo en el subproceso de interfaz de usuario, prepararse para sus usuarios, dando un montón de comentarios negativos cuando la aplicación se desencadena la aplicación no responde errores.
Para evitar «la aplicación no responde» errores, se debería ejecutar el cálculo en un AsyncTask.

OriginalEl autor dan | 2010-11-27

3 Comentarios

  1. 20
    .setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
             ((AlertDialog)dialog).getButton(which).setVisibility(View.INVISIBLE);
             //the rest of your stuff
        }
    })
    Sin embargo, le parece que su diseño no es perfecto en esta parte. Probablemente sería mejor utilizar AsyncTask con ProgressDialog. AsyncTask permite ejecutar largo cálculos en un subproceso en segundo plano por lo que su principal subproceso de interfaz de usuario no está bloqueado y por lo tanto la aplicación no tendrá la ANR.
    Hay alguna forma de deshabilitar el botón depende de un campo de texto en el cuadro de diálogo de la barra?
    Creo que debería haber una forma, sin embargo, hacer una nueva pregunta sobre esto.
    En lugar de hacer desaparecer, acabo de desactivarlo. .setEnabled( false ) Es menos discordante para el usuario. También, sin duda utilizar un AlertDialog dentro de ASyncTask en lugar de sólo una AlertDialog.

    OriginalEl autor Vit Khudenko

  2. 1
    setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.dismiss();

    donde dialog es DialogInterface.

    OriginalEl autor facebook-908416485914433

  3. -3

    Puede establecer la visibilidad de botón invisible.

    ok.setVisibility(View.INVISIBLE);
    pero, ¿cómo puedo obtener el ‘ok’ de la variable?

    OriginalEl autor Kakey

Dejar respuesta

Please enter your comment!
Please enter your name here