Java 在不同的侦听器之间切换

Java 在不同的侦听器之间切换,java,android,android-alertdialog,Java,Android,Android Alertdialog,我使用手势监听器来监视用户的动作,但当应用程序弹出对话框时,我不知道如何将我的手势监听器切换到对话事件并处理事件按钮(确定和取消),有人能给我一个建议吗 伪代码是这样的 public class MainActivity extends FragmentActivity implements ConnectionEventListener{ ...... // when connection established, // pop

我使用手势监听器来监视用户的动作,但当应用程序弹出对话框时,我不知道如何将我的手势监听器切换到对话事件并处理事件按钮(确定和取消),有人能给我一个建议吗

伪代码是这样的

 public class MainActivity extends FragmentActivity
        implements ConnectionEventListener{
        ......
        // when connection established,
        // pop a diaglog (android native diaglog with listview and its adapter) to ask user to select ok or cancel button
        @Override
        public void onUpdateAlert(final int event, final String message){
        }

        // gesture listener
        // if a dialog pops up, the pose can be used to select OK or cancel
        @Override
        public void onDetected(Hand pose){
        }
}

我的问题不是按钮侦听器。实际上,我有两个监听器同时工作,一个用于事件监视器,另一个用于姿势监视器。当一个事件发生时,该事件将弹出一个对话框,选择“确定”或“取消”。同时,姿势听者仍然有效。我想知道当这种情况发生时,如何使用姿势监听器在diaglod弹出时选择“确定”或“取消”?

我想我们需要这样的东西:

public static void showDialog(SomeActivity someActivity, final SomeCallback callBack {
    final Dialog dialog = new Dialog(someActivity);

    dialog.setContentView(R.layout.dialog_with_buttons);

    // OK button ...
    Button dialogButtonOk = dialog.findViewById(R.id.btn_ok);
    dialogButtonOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            callBack.execute(true);
            dialog.dismiss();
        }
    });

    // Cancel button ...
    Button buttonCancel = dialog.findViewById(R.id.btn_cancel);
    buttonCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callBack.execute(false);
            dialog.dismiss();
        }
    });

    dialog.show();
}
showDialog(this, new SomeCallback () {
    @Override
    public void execute(boolean status) {
        if (status) {
            ...
        } else {
            ...
        }
    }
});
我们可以通过以下活动调用showDialog:

public static void showDialog(SomeActivity someActivity, final SomeCallback callBack {
    final Dialog dialog = new Dialog(someActivity);

    dialog.setContentView(R.layout.dialog_with_buttons);

    // OK button ...
    Button dialogButtonOk = dialog.findViewById(R.id.btn_ok);
    dialogButtonOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            callBack.execute(true);
            dialog.dismiss();
        }
    });

    // Cancel button ...
    Button buttonCancel = dialog.findViewById(R.id.btn_cancel);
    buttonCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callBack.execute(false);
            dialog.dismiss();
        }
    });

    dialog.show();
}
showDialog(this, new SomeCallback () {
    @Override
    public void execute(boolean status) {
        if (status) {
            ...
        } else {
            ...
        }
    }
});
以及回调接口:

public interface SomeCallback {
    void execute(boolean status);
}
祝你好运


伪代码可以如下所示:

boolean status = false;

@Override
public void onUpdateAlert(final int event, final String message){
    status = true;    
    // pop up the dialog
}

@Override
public void onDetected(Hand pose){
    if(status) {
            status = false;
            ...          
    }
}

您使用的是哪一个对话框请通过代码进行解释,并更具体地了解您的问题谢谢您的建议。我的问题不是按钮侦听器。我有两个监听器同时工作,一个用于事件监视器,另一个用于姿势监视器。当一个事件发生时,该事件将弹出一个对话框,选择“确定”或“取消”。同时,姿势听者仍然有效。我想知道当这种情况发生时,当diaglod弹出时,如何使用姿势监听器选择“ok”或“cancel”?我们可以检查姿势监视器中是否弹出对话框,这样我们就可以在那里执行逻辑了?不是很清楚。有可能有一个伪代码吗?请看上面的伪代码,我不能在这里写