java - 用 DialogInterface.OnClickListener 区分单个 Dialog

标签 java android interface dialog switch-statement

我们有两个 AlertDialog 对象

AlertDialog dialog1, dialog2;

这两个对话框都是通过 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;
        }
    }

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

最佳答案

我建议您将需要的参数放入自定义监听器中。

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
        }

}

然后,当您将 onClickListeners 添加到对话框时,您只需向监听器提供一个 ID。

关于java - 用 DialogInterface.OnClickListener 区分单个 Dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636151/

相关文章:

java - 无法理解 TangoPoseData 中的 ij 术语

java - Google Kick Start 2020 A 轮中获取样本失败

java - 对对象数组使用 Arrays.binarySearch 并在对象中查找字符串

android - GingerBread 上的 MediaPlayer Framework 和 Apple 的 HTTP Live Streaming 支持

android - Android:MediaPlayer-免提音量

pointers - 将接口(interface)实体放入 Google Cloud Datastore 失败

python - 看不到来自另一台设备的 UDP 多播消息

java - 为什么 Arrays.deepEquals(Object[]arr1,Object[]arr2) 适用于原始多维数组,如 int[][] 、float[][] 等?

java - Jackson 自动映射名为 @foo 的属性?

c# - 为什么我在实例化接口(interface)时出错?