我创建了一个包含列表视图的对话框。列表视图对话框的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
当点击“是”时,我想取消“我附近的网站”和“签到”对话框,返回后台的地图活动。目前它只取消“登记入住”然后返回“我附近的网站”。我希望这更清楚。
答案 0 :(得分:1)
你无法从alertDialogBuilder的匿名onClick()访问这段代码,因为它是向前引用的
final Dialog dialog = builder.create();
dialog.show();
将其移至builder.setTitle("Sites Near Me");
下。继续使用activity.runOnUiThread()从UI线程中关闭对话框。