为什么android dialog.Disclose从未调用?

为什么android dialog.Disclose从未调用?,android,android-dialog,Android,Android Dialog,我已经在我的应用程序中实现了带有接受和拒绝按钮的自定义对话框。除非用户在7秒内单击其中一个按钮,否则将触发Dismise方法。如果用户在7秒钟内的任何时间单击,我想关闭该对话框,但从未启动过Disclease方法。我已经找遍了,但是我还没有从答案中找到答案 final Dialog d = new Dialog(MyActivity.this, R.style.Theme_Dialog); d.setContentView(R.layout.dialog_layout); d.show();

我已经在我的应用程序中实现了带有接受和拒绝按钮的自定义对话框。除非用户在7秒内单击其中一个按钮,否则将触发Dismise方法。如果用户在7秒钟内的任何时间单击,我想关闭该对话框,但从未启动过Disclease方法。我已经找遍了,但是我还没有从答案中找到答案

final Dialog d = new Dialog(MyActivity.this, R.style.Theme_Dialog);
d.setContentView(R.layout.dialog_layout);
d.show();

spRequest.play(spSoundId, 1, 1, 1, 12, 1);
new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        //dia.dismiss();
        d.dismiss();
    }
}, 7000);    //the alert will play for 7 seconds and stop

Button accept = (Button) d.findViewById(R.id.acpt);
accept.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        d.dismiss();
        spRequest.release();
    }
});

Button reject = (Button) d.findViewById(R.id.rjct);
reject.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        d.dismiss();
        spRequest.release();
        msg.setText("");
    }
});

更新:经过一些调试和研究后,我注意到如果我点击按钮两次,对话框将被取消。我猜对话画了两次。我还在努力。正如@aelimill所说,当从活动体调用此代码时(我在OnCreate()中尝试过),此代码工作正常,但当我在广播接收器中执行它时,问题就出现了

通常,在单击方法时覆盖对话框按钮,而不是对话框外的按钮:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("MyMessage");

  alertDialogBuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface arg0, int arg1) {
        //do something
     }
  });

  alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
        alertdialog.cancel();
        //or alertdialog.dismiss();
     }
  });

  AlertDialog alertDialog = alertDialogBuilder.create();
  alertDialog.show();

谢谢你的回答。但我相信实现自定义对话框是可能的。我想把Android对话框看作是最后一个选项,只是因为它看起来丑陋而不专业:(我复制了你的代码,它工作得完美无瑕。对话在按钮点击时被解散了。唯一的区别是这行SPAvEndo.PoT(SpSunDoad,1, 1, 1,12, 1);(我评论)。尝试用SPEvr.RelaSe()来评论这行和行。在按钮单击列表中,对话框在7秒钟后被取消。但是如果您单击其中一个按钮,则d.Disclose将被忽略。您是否单击了按钮?抱歉,更新了我的评论:)是的,对话框在按钮单击时被取消。我感谢您的帮助。在我的spRequest.release()上;被激发,但d.disclose()未被激发。我将进行更多的调查。如果出现不可跟踪的错误,请尝试在Try/catch中包装spRequest.release()