当ProgressDialog栏显示时,无法触发`onBackPressed`和`onKeyDown`

时间:2016-12-23 10:36:23

标签: android

我遇到了一个奇怪的问题,我有一个ProgressDialog,当它显示dialog.setCancelable(false);时,我无法触发onBackPressedonKeyDown。我有这样一个场景,其中显示了进度,但按下后退按钮运行一些代码。任何帮助都是折旧的!

2 个答案:

答案 0 :(得分:1)

Android对话课程BackPress方法显示

public void onBackPressed() {
        if (mCancelable) {
           // cancle and it will return
        }
 }

因此,如果setCanclable设置为true,它将不会对onBackPress()或关键事件做任何事情

你只需要创建扩展Dialogue的对话类,只需要覆盖onBackPress()方法和keyevent,如

public class MyDialog extends Dialog {

    public MyDialog(Context context, myOnClickListener myclick) {
        super(context);
        this.myListener = myclick;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.alert);
    }
   @Override
   public void onBackPressed()
   {

     // do thing which you want to do on back press
   }
  // same for key 
}

希望这个帮助

答案 1 :(得分:0)

如果您希望仅通过触摸取消对话框,请使用dialog.setCanceledOnTouchOutside(false);代替dialog.setCancelable(false);

然后您应该仍然可以使用后退按钮。请注意,您必须覆盖OnBackPressed以禁止关闭对话框的默认行为。