当我按下手机上的back键时,弹出对话框,选是则执行back行为,选否则留在当前的activity,什么都不做;对话框已经做好,但不论选是还是选否,都执行back动作,回到了上一级的activity,请问如何解决?

解决方案 »

  1.   

    选是后,return super.onKeyDown()...
    选否后,return true
      

  2.   


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
    //show dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle("提示")
    .setMessage("确定要退出吗?")
    .setPositiveButton("确定", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    finish();
    System.exit(0);
    }
    })
    .setNegativeButton("取消", new OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    }
    });
    builder.create().show();
    break; default:
    break;
    }
    return true;
    }return true代表事件已经被消耗
    return super.onKeyDown(keyCode, event)代表事件未被消耗,如果可能,将被继续分发。
      

  3.   

    够详细,各位大神,找了N多网上办法,非常感谢!找到问题了,我直接用了Google官网关于在host activity里直接处理dialog中按钮处理事件的方法,结果没粘好,“是”、“否”按钮里都粘成“是”的方法了,晕!再次感谢回复!