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();
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. –
Incluso tengo el mismo problema ... ¿Alguna gente de ideas? – mvrck
No hacer nada en KeyEvent y onSearchRequested(). ¿Has probado eso? –