2010-09-30 31 views
5

Si creo un diálogo de alerta independiente con el constructor (no conectado a la actividad/vista) ¿cómo puedo evitar que el botón de búsqueda haga que el diálogo de alerta se cierre?¿Cómo evitar que el botón de búsqueda cierre un AlertDialog?

Gracias.

+0

no tengo ni idea, pero me encantaría ver a alguien contesta éste. El uso de la clase keyEvent no funciona, ya que OnKeyUp/Down/Longpress no se ejecuta cuando toca la tecla de búsqueda mientras está abierto un cuadro de diálogo. Me pregunto si hay algún otro método que pueda ser anulado. –

+0

Incluso tengo el mismo problema ... ¿Alguna gente de ideas? – mvrck

+0

No hacer nada en KeyEvent y onSearchRequested(). ¿Has probado eso? –

Respuesta

0

Eso es realmente complicado, tengo a LayoutInflater en mente, pero esa cosa también necesita cerrarse. Bueno, una manera cursi de hacer eso es tener una Vista que usted hace visible o invisible

0

También me enfrento al mismo problema al mostrar el diálogo EULA. Fue resuelto por setOnKeyListener.

Aquí está la solución:

   AlertDialog.Builder builder = new AlertDialog.Builder(mActivity) 
        .setTitle(title) 
        .setMessage(message) 
        .setPositiveButton(android.R.string.ok, new Dialog.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          SharedPreferences.Editor editor = prefs.edit(); 
          editor.putInt(Constants.EULA_VERSION, versionInfo.versionCode); 
          editor.commit(); 
          dialogInterface.dismiss(); 
         } 
        }) 
        .setNegativeButton(android.R.string.cancel, new Dialog.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // Close the activity once the EULA is declined. 
          mActivity.finish(); 
         } 

        }); 

      //To avoid skipping EULA screen through search & menu button. 
      builder.setOnKeyListener(new DialogInterface.OnKeyListener() { 
       public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
        if (keyCode < KeyEvent.KEYCODE_DPAD_UP || keyCode > KeyEvent.KEYCODE_DPAD_CENTER) 
        { 
         return true; 
        } 
        else 
         return false; 
       } 
      }); 
      builder.create().show(); 
Cuestiones relacionadas