2010-09-30 94 views
5

如果我使用構建器(未連接到活動/視圖)創建獨立的alertdialog,如何讓搜索按鈕不會導致alertdialog關閉?如何讓搜索按鈕關閉AlertDialog?

謝謝。

+0

我不知道,但我很樂意看到有人回答這個問題。使用keyEvent類不起作用,因爲OnKeyUp/Down/Longpress在對話框打開時觸摸搜索鍵時不會執行。我想知道是否有其他方法可以被覆蓋。 – 2011-04-21 21:21:15

+0

即使我有同樣的問題....任何想法的人? – mvrck 2011-07-20 10:20:37

+0

對KeyEvent和onSearchRequested()不做任何處理。你試過了嗎? – 2011-07-20 11:42:45

回答

0

這真的很棘手,我有LayoutInflater記住,但這件事情也需要關閉。一個俗氣的方式做到這一點有一個視圖,你只是做可見或不可見

0

我也遇到同樣的問題,同時顯示EULA對話框。 它由setOnKeyListener解決。

這裏是解決方案:

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