2010-09-30 95 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();