我遇到了一个奇怪的问题,我有一个ProgressDialog
,当它显示dialog.setCancelable(false);
时,我无法触发onBackPressed
或onKeyDown
。我有这样一个场景,其中显示了进度,但按下后退按钮运行一些代码。任何帮助都是折旧的!
答案 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
以禁止关闭对话框的默认行为。