在我的应用程序中,我尝试在 Activity 开始时打开一个对话框,并且它有一个肯定按钮。单击该按钮将打开一个新 Activity 。它与以下代码一起工作正常。但是当我长按菜单按钮或搜索按钮时,对话框就会消失。即使我按下菜单或搜索按钮,如何才能使此对话框保持不变。谢谢。
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();
}
}
最佳答案
通过将 onKeyListener
附加到 Dialog
来处理按下的按键,在我的示例中,我只是处理搜索键,但您应该得到观点。如果您从未使用过这样的监听器,则返回 true
意味着事件不应不传播,因此会防止系统捕获搜索显示对话框时按下
键。
在任何其他情况下( key 不是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;
}
});
...
相关文档:
关于android - 为什么按下搜索按钮时对话框消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596359/