4

静的メソッドを介してアプリ全体で便利に呼び出される汎用の 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/キャンセル ダイアログを追加したいと考えています。私が知る限りonClick()、アクティビティに対して定義できるのは 1 つだけなので、これを実装する方法がわかりません。

提案やヒントはありますか?

4

2 に答える 2

6

このようなものを試してみてください...

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();
}
于 2012-05-18T20:45:14.053 に答える
1

選択肢は 2 つあります。1) ダイアログ自体に OnClickListener を設定できます。2) 渡された DialogInterface に基づいて、どのダイアログがどれであるかを知ることができます。

于 2012-05-18T20:44:17.030 に答える