2010-09-30 10 views
5

Oluşturucu ile bağımsız bir alertdialog oluşturuyorsam (etkinliğe/görünüme bağlı değil), arama düğmesinin alertdialog'un kapanmasına neden olmasını nasıl sağlayabilirim?Arama düğmesinin bir AlertDialog'ı kapatması nasıl sağlanır?

Teşekkürler.

+0

Hiçbir fikrim yok, ama birinin bunu cevaplamak görmek isteriz. Bir iletişim kutusu açıkken arama tuşlarına dokunduğunuzda, OnKeyUp/Down/Longpress çalışmadığından keyEvent sınıfının kullanılması çalışmaz. Merak edilebilir başka bir yöntem var mı merak ediyorum. –

+0

Ben bile aynı problem var .... herhangi bir fikir insanlar? – mvrck

+0

KeyEvent ve onSearchRequested() öğesinde hiçbir şey yapmayın. Bunu denedin mi? –

cevap

0

Bu gerçekten çok zor, LayoutInflater'ı aklımda tutuyorum ama o şeyin de kapanması gerekiyor. Bunu yapmanın en iyi yolu, sadece görünür ya da görünmez olan bir Görünüm var

0

Aynı zamanda, EULA İletişimini gösterirken de aynı sorunla karşılaşıyorum. setOnKeyListener tarafından çözüldü. Burada

çözümdür:

   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(); 
İlgili konular