从android中的内部对话框中取消第一个对话框

时间:2012-10-21 00:46:00

标签: android alertdialog android-alertdialog

我创建了一个包含列表视图的对话框。列表视图对话框的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

当点击“是”时,我想取消“我附近的网站”和“签到”对话框,返回后台的地图活动。目前它只取消“登记入住”然后返回“我附近的网站”。我希望这更清楚。

1 个答案:

答案 0 :(得分:1)

你无法从alertDialogBu​​ilder的匿名onClick()访问这段代码,因为它是向前引用的

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

将其移至builder.setTitle("Sites Near Me");下。继续使用activity.runOnUiThread()从UI线程中关闭对话框。