0

シンプルな単一選択項目でダイアログを作成したい。デフォルトでは、アイテムは選択されていません。OKボタンとキャンセルボタンだけが欲しい。項目が選択されるまで、[OK] ボタンは無効のままにする必要があります。これを行う組み込みの方法はありますか、それとも独自のカスタム ダイアログを作成する必要がありますか? これは現在私が持っているものです:

AlertDialog.Builder builder = new AlertDialog.Builder(context);

builder.setTitle(getString(R.string.lbl_MarkReviewAs))
    .setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int item)
      {
        selectedReviewStatusIndex = item;
        AlertDialog alertDialog = (AlertDialog)dialog;
        alertDialog.getButton(0).setEnabled(true);
      }
    })
    .setPositiveButton(getString(R.string.lbl_ButtonOK), new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int whichButton)
      {
        dialog.dismiss();
      }
    })
    .setNegativeButton(getString(R.string.lbl_ButtonCancel), new DialogInterface.OnClickListener()
    {
      public void onClick(DialogInterface dialog, int whichButton)
      {
        dialog.dismiss();
      }
    });

AlertDialog dialog =  builder.create();
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
dialog.show();

ここでの問題は、dialog.getButton(AlertDialog.BUTTON_POSITIVE) が null を返すことです。では、どうすればポジティブボタンにアクセスできますか?

4

3 に答える 3

0

ListActivityをサブクラス化するのが一番です。これがです。

このアクティビティのスタイルを(マニフェストで)いくつかのダイアログに設定するのが適切です(最適な選択は「@ android:style / Theme.DeviceDefault.Dialog」です)。

<activity android:name="YourDialogActivity"
    android:label="@string/title"
    android:theme="@android:style/Theme.DeviceDefault.Dialog">
    <intent-filter>
          ...
    </intent-filter>
</activity>
于 2012-05-24T14:19:22.057 に答える
0

選択したアイテムにリスナーを設定し、「OK」ボタンを有効にします

于 2012-05-24T13:56:18.287 に答える
0

ダイアログを表示してから、ボタンを無効にする必要があります。

AlertDialog dialog =  builder.create();

dialog.show();

dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
于 2013-11-29T06:52:15.930 に答える