多个确定/取消对话框,如何判断,在onClick()中,哪个对话框?

时间:2012-05-18 20:30:31

标签: android android-dialog

我创建了一个通用的OkCancelDialog类,可以通过静态方法在我的应用程序中方便地调用:

  static public void Prompt(String title, String message) {
    OkCancelDialog okcancelDialog = new OkCancelDialog();
    okcancelDialog.showAlert(title, message);     
  }

由于各种原因,我需要活动中的onClick监听器,所以在我的活动中:

  public void onClick(DialogInterface v, int buttonId) {
    if (buttonId == DialogInterface.BUTTON_POSITIVE) { // OK button
         // do the OK thing
    }
    else if (buttonId == DialogInterface.BUTTON_NEGATIVE) { // CANCEL button
         // do the Cancel thing
    }
    else {
      // should never happen
    }
  }

这适用于应用程序中的单个对话框,但现在我想添加另一个OK / Cancel对话框,由同一个活动处理。据我所知,只有一个onClick()可以为活动定义,所以我不知道如何实现这个。

有任何建议或提示吗?

2 个答案:

答案 0 :(得分:5)

尝试这样的事情......

public class MyActivity extends Activity
    implements DialogInterface.OnClickListener {

    // Declare dialogs as Activity members
    AlertDialog dialogX = null;
    AlertDialog dialogY = null;

    ...

    @Override
    public void onClick(DialogInterface dialog, int which) {

        if (dialogX != null) {
            if (dialogX.equals(dialog)) {
                // Process result for dialogX
            }
        }

        if (dialogY != null) {
            if (dialogY.equals(dialog)) {
                // Process result for dialogY
            }
        }
    }
}

编辑这是我创建AlertDialogs ...

的方法
private void createGuideViewChooserDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Select Guide View")
        .setSingleChoiceItems(guideViewChooserDialogItems, currentGuideView, this)
        .setPositiveButton("OK", this)
        .setNegativeButton("Cancel", this);
    guideViewChooserDialog = builder.create();
    guideViewChooserDialog.show();
}

答案 1 :(得分:1)

你有两个选择。 1)您可以在对话框本身上设置OnClickListener。 2)您可以根据传入的DialogInterface判断哪个对话框是哪个。