调用dismissDialog时,对话框不会被忽略

时间:2013-11-23 20:21:49

标签: android

你好我有一个问题,dismissDialog()在被叫时不起作用。

我希望我的对话框在后退时关闭。

我用这段代码解雇他:

public class InstaLoginDialog extends Dialog {


// SOME METHODS

public void onBackPressed() {

        InstaLoginDialog.this.dismissDialog();
            InstaLoginDialog.this.dismiss();
            InstaLoginDialog.this.cancel();

    }
}

onBackPressed()被调用的部分,但对话框没有被解雇。

我尝试了所有的解雇方法。

感谢帮助

5 个答案:

答案 0 :(得分:9)

设置dialog.cancelable(true)并且您不需要编写任何代码来解除对话按下后按键。

答案 1 :(得分:1)

在API级别13中弃用了dismissDialog()方法

你试过dismiss()吗?

例如InstaLoginDialog.this.dismiss()


<强> [编辑]

我已经尝试过这段代码了,当我按下后退按钮时,对话框被解除了。我没有使用onBackPressed()

这是MyCustomDialog类定义:

public class MyCustomDialog extends Dialog {

    public MyCustomDialog(Context context) {
        super(context);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.dialog);
    }
}

然后在我的MainActivity中,我调用这样的对话框:

MyCustomDialog mydialog = new MyCustomDialog(MainActivity.this);
mydialog.show();

当我按下手机的后退按钮时,对话框被取消。希望这有用。

答案 2 :(得分:1)

尝试在您的活动中执行此操作:

public class YourActivity extends FragmentActivity {

...

  public void onBackPressed() {
         dialog.dismiss();
  }
}

答案 3 :(得分:1)

尝试这个创建构造函数。

public InstaLoginDialog (Context context) {
        super(context);
    }

onBackPressed()使用了这个。

    InstaLoginDialog .this.dismiss(); 

答案 4 :(得分:1)

仅设置your_dialog.cancelable(true)。每件事都将由android本身处理。

your_dialog.cancelable(true)

关注你。

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getParent());
                            alertDialogBuilder.setTitle("Blocked");
                            alertDialogBuilder
                                    .setMessage("Seems like you are blocked by this service provider.Please choose another service provider.")
                                    .setCancelable(true)
                                .setNegativeButton("OK",new DialogInterface.OnClickListener() {
                                                public void onClick(
                                                        DialogInterface dialog,
                                                        int id) {
                                                    dialog.cancel();
                                                }
                                            });
                            AlertDialog alertDialog = alertDialogBuilder.create();
                            alertDialog.show();

如果您需要使用onBackPressed()取消对话框,请尝试

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
                your_dialog.dismiss();
}