2010-09-30 9 views
5

यदि मैं बिल्डर के साथ एक स्टैंडअलोन अलर्टडियलॉग बनाता हूं (गतिविधि/दृश्य से कनेक्ट नहीं) तो मैं सर्च बटन को अलर्टडिअलॉग को बंद करने से कैसे रोक सकता हूं?अलर्टडिअलॉग को बंद करने से खोज बटन कैसे रखें?

धन्यवाद।

+0

मुझे पता नहीं है, लेकिन मैं किसी को इस एक का जवाब देखने के लिए अच्छा लगेगा। KeyEvent क्लास का उपयोग करना काम नहीं करता है क्योंकि जब आप एक संवाद बॉक्स खोलते हैं तो खोज कुंजी को स्पर्श करते समय ऑनकेप/डाउन/लॉन्गप्रेस निष्पादित नहीं होता है। मुझे आश्चर्य है कि क्या कोई और तरीका है जिसे ओवरराइड किया जा सकता है। –

+0

यहां तक ​​कि मुझे भी एक ही समस्या है .... किसी भी विचार लोग? – mvrck

+0

KeyEvent और onSearchRequested() पर कुछ भी नहीं करें। क्या आपने कोशिश की? –

उत्तर

0

यह वास्तव में मुश्किल है, मेरे पास लेआउट इन्फ्लेटर दिमाग में है लेकिन उस चीज़ को भी बंद करने की जरूरत है। अच्छी तरह से ऐसा करने के लिए एक प्यारा तरीका यह है कि आप केवल दृश्यमान या अदृश्य

0

ईयूएलए संवाद दिखाते समय भी मुझे एक ही समस्या का सामना करना पड़ रहा है। इसे सेटऑनके लिस्टनर द्वारा हल किया गया था।

यहाँ समाधान है:

   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(); 
संबंधित मुद्दे