2010-09-30 6 views
5

Si je crée un dialogue d'alerte autonome avec le générateur (non connecté à l'activité/à la vue), comment puis-je empêcher le bouton de recherche de fermer le dialogue d'alerte?Comment empêcher le bouton de recherche de fermer un AlertDialog?

Merci.

+0

Je ne sais pas, mais j'aimerais voir quelqu'un répondre à cette question. L'utilisation de la classe keyEvent ne fonctionne pas car OnKeyUp/Down/Longpress ne s'exécute pas lorsque vous appuyez sur la touche de recherche lorsqu'une boîte de dialogue est ouverte. Je me demande s'il y a une autre méthode qui pourrait être surchargée. –

+0

Même moi j'ai le même problème .... des gens d'idées? – mvrck

+0

Ne faites rien sur KeyEvent et onSearchRequested(). Avez-vous essayé cela? –

Répondre

0

C'est vraiment compliqué, j'ai LayoutInflater à l'esprit mais cette chose aussi doit fermer. Eh bien, une façon cheesy de faire cela est d'avoir une vue que vous faites juste visible ou invisible

0

Je suis également confronté au même problème lors de l'affichage du dialogue EULA. Il a été résolu par setOnKeyListener.

est la solution ici:

   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(); 
Questions connexes