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 回答