2

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

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

1 回答 1

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;
            }
        });
...

相关文件:

于 2012-05-15T08:03:32.390 回答