如何保持搜索按钮关闭AlertDialog?

时间:2010-09-30 23:37:03

标签: android

如果我使用构建器创建独立的alertdialog(未连接到活动/视图),如何保持搜索按钮不会导致alertdialog关闭?

感谢。

2 个答案:

答案 0 :(得分:0)

这真的很棘手,我考虑过LayoutInflater,但那个东西也需要关闭。那么一个俗气的方法就是拥有一个你可以看到或看不见的视图

答案 1 :(得分:0)

在显示EULA Dialog时我也遇到了同样的问题。 它由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();