使用DialogInterface.OnClickListener区分单个对话框

Mar*_*era 6 java android dialog interface switch-statement

我们有两个AlertDialog对象

AlertDialog dialog1, dialog2;
Run Code Online (Sandbox Code Playgroud)

两个对话框都是通过创建的AlertDialog.Builder.
我们如何识别哪个对话框是事件的来源DialogInterface.OnClickListener

使用单个对话框我们可以这样做:

AlertDialogInstance.setOnClickListener(myListener);

//myListener
public void onClick(DialogInterface arg0, int arg1) {
        switch (arg1) {
            case AlertDialog.BUTTON_NEGATIVE:
                // do something
                break;
            case AlertDialog.BUTTON_POSITIVE:
                // do something
                break;
            case AlertDialog.BUTTON_NEUTRAL:
                // do something
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何修改这个switch逻辑来处理多个对话框?
(或者,如果有更好的系统来处理对话框,除了内联按钮回调,它是什么?)

Qui*_*ick 5

我建议你把自己需要的param放在自定义监听器中.

private class CustomOnClickListener implements OnClickListener {
    private int id;

    public CustomOnClickListener(int id) {
       this.id = id;
    }

    public void onClick(DialogInterface dialog, int which) {
            //check id and which
        }

}
Run Code Online (Sandbox Code Playgroud)

然后,当您将onClickListeners添加到对话框时,您只需向侦听器提供一个id.