0

リストビューを含むダイアログを作成しました。次に、リストビューダイアログのonclicklistenerは、ユーザーに選択の確認を求める新しい内部ダイアログをロードします。

これが完了したら、外側と内側の両方のダイアログボックスを閉じたいと思います。内側のダイアログを問題なく閉じることができますが、内側からのリストビューを含む外側のダイアログを閉じる方法を見つけるのに苦労しています。

私のコードの抜粋は以下のとおりです。

// Display list of sites
                    AlertDialog.Builder builder = new AlertDialog.Builder(
                            this);
                    builder.setTitle("Sites Near Me");

                    ListView modeList = new ListView(this);
                    ArrayList<String> stringArrayList = new ArrayList<String>();

                    for (int i = 0; i < possibleLocaitons.size(); i++) {
                        String currentLocation = possibleLocaitons.get(i)
                                .getName();
                        stringArrayList.add(currentLocation);
                    }

                    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(
                            this, android.R.layout.simple_list_item_1,
                            android.R.id.text1, stringArrayList);
                    modeList.setAdapter(modeAdapter);

                    // List click listener
                    modeList.setOnItemClickListener(new OnItemClickListener() {
                        public void onItemClick(AdapterView<?> parent,
                                View view, int pos, long id) {

                            String site = parent.getItemAtPosition(pos)
                                    .toString();

                            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                                    LocationActivity.this);

                            // set title
                            alertDialogBuilder.setTitle("");

                            // set dialog message
                            alertDialogBuilder
                                    .setMessage("Check in at " + site + "?")
                                    .setCancelable(false)
                                    .setPositiveButton(
                                            "Yes",
                                            new DialogInterface.OnClickListener() {
                                                public void onClick(
                                                        DialogInterface dialog,
                                                        int id) {
                                                    // Update the database
                                                    UserFunctions us = new UserFunctions();
                                                    us.updateLocation(
                                                            "fish", "888");
                                                    dialog.cancel();


                                                }
                                            })
                                    .setNegativeButton(
                                            "Cancel",
                                            new DialogInterface.OnClickListener() {
                                                public void onClick(
                                                        DialogInterface dialog,
                                                        int id) {
                                                    dialog.cancel();
                                                }
                                            });

                            // create alert dialog
                            AlertDialog alertDialog = alertDialogBuilder
                                    .create();

                            // show it
                            alertDialog.show();
                        }

                    });

                    builder.setView(modeList);
                    final Dialog dialog = builder.create();

                    dialog.show();

                }

どんな助けでも大歓迎です。

編集:

これが私が達成しようとしていることのスクリーンショットです:

http://dl.dropbox.com/u/57441159/Screenshot_2012-10-21-10-13-21.png

「はい」をクリックすると、「近くのサイト」と「チェックイン」の両方のダイアログをキャンセルして、バックグラウンドでマップアクティビティに戻ります。現在、「チェックイン」をキャンセルしてから「近くのサイト」に戻るだけです。これがもっと明確になることを願っています。

4

1 に答える 1

1

このコードは前方参照されているため、alertDialogBu​​ilderの匿名のonClick()からアクセスすることはできません。

 final Dialog dialog = builder.create();
 dialog.show();

下に移動しbuilder.setTitle("Sites Near Me");ます。activity.runOnUiThread()を使用して、UIスレッドからダイアログを閉じる手順に進みます。

于 2012-10-21T09:30:39.280 に答える