按下搜索按钮时对话框消失的原因

时间:2012-05-15 07:50:09

标签: android dialog

在我的应用程序中,我试图在活动开始时打开一个对话框,它有一个肯定的按钮。点击该按钮,将打开一个新活动。它的工作正常,代码如下。但是当我长按菜单按钮或搜索按钮对话框时就消失了。即使按下菜单或搜索按钮,如何使此对话框保持不变。感谢。

public class Sam3Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    TextView title = new TextView(this);
    title.setText("DM2");
    title.setBackgroundColor(Color.DKGRAY);
    title.setPadding(10, 10, 10, 10);
    title.setGravity(Gravity.CENTER);
    title.setTextColor(Color.WHITE);
    title.setTextSize(20);
    /* alert message */
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCustomTitle(title);

    builder.setMessage("dialog with message").setCancelable(false).setPositiveButton(
            "Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                    Log.d("choose","on dissmiss");
                startActivity(new Intent(getApplicationContext(),
                                                              StatisticDisplay.class));//second activity
                }
            });
    AlertDialog alert = builder.create();

    alert.show();
     }
}

1 个答案:

答案 0 :(得分:4)

通过将onKeyListener附加到Dialog来处理按下的键,在我的示例中,我只是处理搜索键,但您应该明白这一点。如果您从未使用过这样的监听器,则返回true表示该事件应该传播,并因此防止系统在发生search密钥时被捕获在显示对话框时按下。

在任何其他情况下(密钥不是KEYCODE_SEARCH),它只会传递此侦听器,就好像它不存在一样。 :)

... 
builder.setOnKeyListener(new OnKeyListener(){
            @Override
            public boolean onKey(DialogInterface dialog, 
                                 int keyCode,
                                 KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_SEARCH ) return true;
                return false;
            }
        });
...

相关文件: