当前位置:编程学习 > wap >>

为什么dialog显示的时候,返回键的定义不起作用啊????

public void showDiologFaile() {
Builder b = new AlertDialog.Builder(this);
b.setTitle("title");
b.setMessage("message?");
b.setPositiveButton("是", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

d.mICount = findTimer;
d.fail = false;
// dialog.dismiss();

dialogRun = false;
//finish();
}

});
b.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();
}
});
b.create().show();
b.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
                if(keyCode == KeyEvent.KEYCODE_BACK) {
                    dialog.dismiss();
                    finish();
                    return true;
                }
                return false;
}
});
} --------------------编程问答-------------------- 楼主试试
把b.create().show();
拉到事件定义后面来
还不行的话
试试把事件绑在.create()的返回对象上
然后再那个对象.show()
--------------------编程问答-------------------- 这句   b.setOnKeyListener(new OnKeyListener() 
放在   b.create().show();  之上即可 --------------------编程问答-------------------- 另外 一个建议
if改为
if(event.getAction()==KeyEvent.ACTION_DOWN&&keyCode == KeyEvent.KEYCODE_BACK){

}

不然会执行2次onkey,一次down,一次up --------------------编程问答-------------------- 我也遇到过lz这个问题,其实当dialog在前端的时候,你的焦点位于dialog界面,而不是activity界面,所以你在Activity里定义的onKeyDown()方法是不起作用的。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,