在Java for Android中点击外部自定义对话框时,OnDiskMissListener和OnCancelListener未执行

在Java for Android中点击外部自定义对话框时,OnDiskMissListener和OnCancelListener未执行,java,android,dialog,Java,Android,Dialog,我有一个自定义对话框,当用户退出该对话框时,主活动将通过使用start activity刷新。到目前为止,情况并非如此,因为对话框关闭时没有任何一个侦听器执行。当按下后退按钮以及关闭屏幕上的对话框时,会发生这种情况 public class CustomDialogClass extends Dialog implements android.view.View.OnClickListener { public Activity mActivity; public CustomDi

我有一个自定义对话框,当用户退出该对话框时,主活动将通过使用start activity刷新。到目前为止,情况并非如此,因为对话框关闭时没有任何一个侦听器执行。当按下后退按钮以及关闭屏幕上的对话框时,会发生这种情况

public class CustomDialogClass extends Dialog implements
    android.view.View.OnClickListener {

public Activity mActivity; 

public CustomDialogClass(Activity activity) {
    super(activity);
    this.mActivity = activity;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.custom_dialog);

    setCanceledOnTouchOutside(true);

    new OnDismissListener() {

        @Override
        public void onDismiss(DialogInterface dialog) {
            // TODO Auto-generated method stub
            Log.e("check", "STARTED_dismiss");
            Intent i = new Intent(mActivity, MainActivity.class);
            mActivity.startActivity(i);

        }
    };

    new OnCancelListener(){

        @Override
        public void onCancel(DialogInterface dialog) {
            // TODO Auto-generated method stub
            Log.e("check", "STARTED_Cancel");
            Intent i = new Intent(mActivity, MainActivity.class);
            mActivity.startActivity(i);
        }

    };
}

您必须设置侦听器,为此只需在onCreate方法中调用setOnDismissListener和setOnCancelListener方法。像这样:

setOnDismissListener(new OnDismissListener() {
   @Override
   public void onDismiss(DialogInterface dialog) {
       // your code here
   }
});

setOnCancelListener(new OnCancelListener() {
   @Override
   public void onCancel(DialogInterface dialog) {
       // your code here
   }
});

您可以创建匿名侦听器。你需要处理好你的听众。 这样做:

OnDismissListener onDismissListener = new OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        // TODO Auto-generated method stub
        Log.e("check", "STARTED_dismiss");
        Intent i = new Intent(mActivity, MainActivity.class);
        mActivity.startActivity(i);

    }
};

OnCancelListener onCancelListener = new OnCancelListener(){

    @Override
    public void onCancel(DialogInterface dialog) {
        // TODO Auto-generated method stub
        Log.e("check", "STARTED_Cancel");
        Intent i = new Intent(mActivity, MainActivity.class);
        mActivity.startActivity(i);
    }

};
然后将侦听器添加到对象:

myObject.setOnDismissListener(onDismissListener);
myObject.setOnCancelListener(onCancelListener);

但是,在哪里设置对话框的侦听器呢?我可以看到,您只是创建匿名对象侦听器,但不使用它们。