我有一个这样的对话框。
AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this,
AlertDialog.THEME_DEVICE_DEFAULT_DARK);
mySortAlertDialog.setTitle("Sort by?");
String[] r = {
"Firstname", "Lastname"
};
mySortAlertDialog.setSingleChoiceItems(r, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
这创建了两个选项,现在我需要一个按钮来确认用户的选择。所以我这样做:
mySortAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {@
Override
public void onClick(DialogInterface dialog, int which) {
现在的问题是。我有两个监听器,一个用于检查选择哪个选项,另一个用于确认选择并使用第一个监听器中的值执行逻辑。
我的问题是,如何让这两个侦听器进行交互,以便用户选择firstname或lastname,然后按OK,然后根据选择执行逻辑。
感谢。
编辑:这就是我的对话框的样子......
答案 0 :(得分:2)
使用您的代码,这应该是完美的。 (使用AlertDialog
。 getListView #getCheckedItemPosition
)
AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this);
mySortAlertDialog.setTitle("Sort by?");
String[] r = {"Firstname", "Lastname"};
mySortAlertDialog.setSingleChoiceItems(r, 0, null);
mySortAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(mContext, "Selected: " + ((AlertDialog)dialog).getListView().getCheckedItemPosition(), Toast.LENGTH_LONG).show();
}
});
mySortAlertDialog.create().show();
答案 1 :(得分:1)
替换此代码。
mySortAlertDialog.setSingleChoiceItems(r, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
与
mySortAlertDialog.setItems(r, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
然后尝试在对话框中放置正面按钮。
答案 2 :(得分:1)
您可以使用如下:
AlertDialog.Builder mySortAlertDialog = new AlertDialog.Builder(this);
mySortAlertDialog.setTitle("Sort by?");
String[] r = { "Firstname", "Lastname" };
String selectedText = "";
mySortAlertDialog.setSingleChoiceItems(r, -1,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
selectedText = r[which];
}
});
mySortAlertDialog.setPositiveButton("Ok", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Use selectedText here
}
});