2

我有一个这样的对话框。

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) {   

现在问题来了。我有两个侦听器,一个用于检查选择了哪个选项,另一个用于确认选择并使用第一个侦听器的值执行逻辑。

我的问题是,如何让这两个侦听器交互,以便用户选择名字或姓氏,然后按 OK,然后根据选择执行逻辑。

谢谢。

编辑:这就是我的对话框的样子......

在此处输入图像描述

4

3 回答 3

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();
于 2013-10-01T12:52:50.350 回答
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

                }
            });
于 2013-10-01T12:57:43.443 回答
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) {

        }
});

然后尝试在对话框中放置积极按钮。

于 2013-10-01T12:44:56.970 回答