在我的应用程序中,我试图在活动开始时打开一个对话框,它有一个肯定的按钮。点击该按钮,将打开一个新活动。它的工作正常,代码如下。但是当我长按菜单按钮或搜索按钮对话框时就消失了。即使按下菜单或搜索按钮,如何使此对话框保持不变。感谢。
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();
}
}
答案 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;
}
});
...
相关文件: