Android singlechoiceitem对话框

时间:2013-10-01 12:37:31

标签: android onclicklistener

我有一个这样的对话框。

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,然后根据选择执行逻辑。

感谢。

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

enter image description here

3 个答案:

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

                }
            });