1

ユーザーが次のコードスニペットを使用して値を選択できるダイアログを表示しようとしています。

           AlertDialog.Builder builder = new AlertDialog.Builder(this.objActivity);
           builder.setTitle("Alert Dialog with ListView");
           builder.setIcon(R.drawable.ic_launcher);
           builder.setSingleChoiceItems(lstNames.toArray(new CharSequence[lstNames.size()]), 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int intItem) {

                   PreferenceCategory targetCategory = (PreferenceCategory) StopFinder.this.objActivity.findPreference("monitored_stops");
                   final Preference account = new Preference(StopFinder.this.objActivity);
                   account.setKey(lstIds.get(intItem));
                   account.setTitle(lstStops.get(intItem));
                   account.setSummary(lstNumbers.get(intItem));
                   targetCategory.addPreference(account);
                   dialog.dismiss();

               }
           });
           final AlertDialog alert = builder.create();
           alert.show();

ユーザーがアイテムを選択したときに、ダイアログを閉じたいのですが、できませんでしたか?

却下する必要があることを読みましたalertが、メソッドのalert後に初期化されるため、onClickこれを却下する方法がわかりません。他の人と同じ質問を何百万回も行って申し訳ありませんが、このシナリオに頭を悩ませることはできませんでした。ありがとう

4

4 に答える 4

2

setItems()の代わりに を使用しsetSingleChoiceItems()ます。

アイテムのクリックでダイアログを閉じ、コールバック関数を呼び出します。

于 2013-03-19T11:03:24.870 に答える
0

onCreate();の前にアラートを宣言してみてください。このような

AlertDialog alert;
@Override
protected void onCreate(Bundle savedInstanceState) {

次に、alert.dismiss();の代わりに使用しますdialog.dismiss();

また、交換してくださいfinal AlertDialog alert = builder.create();

alert = builder.create();

于 2013-03-19T11:04:33.283 に答える
0

これを試して

builder.create().show(); 

それ以外の

final AlertDialog alert = builder.create();
alert.show();
于 2013-03-19T11:08:15.390 に答える
0

アラートをクラスのプライベート変数として宣言し、クリックを呼び出す前に値を割り当ててalert.dismiss()、onClick イベントで使用して閉じることができると思います。

于 2013-03-19T11:02:33.930 に答える