0

我有一个在触摸时切换状态的复选框。我想知道如何忽略触摸状态开关。我在复选框上附加了一个 onClickListener,在其中我正在使用“是”或“否”按钮更改状态。

        if(sog.isChecked()){
                sog.setChecked(false);
        } else {
                sog.setChecked(true);
        }

编辑:复选框在触摸时切换,我的“是”按钮也在改变状态。

编辑2:我希望我的对话框改变状态,而不是复选框自己做。

编辑3:

        sog.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            showDialog(3);

        }
    });

builder.setTitle("Checkbox")
        .setMessage(
                "Are you sure you want to switch checkbox?")
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int id) {
                        if(sog.isChecked()){
                            sog.setChecked(false);
                        } else {
                            sog.setChecked(true);
                            setTotalTime();
                        }
                    }
                })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,
                            int id) {
                        dialog.cancel();
                    }
                });
        AlertDialog alert = builder.create();
        return alert;
4

1 回答 1

1

我只是想添加一个关于从关闭/打开更改它的构象。

实现一个, 在 vi​​a上OnCheckedChangeListener注册。在中,如果 的状态是您需要额外确认的状态,请不要理会并弹出对话框。如果用户在对话框中点击一个按钮,表明他们不想进行更改,则手动将 的选中状态恢复为其先前值。CheckBoxsetOnCheckedChangeListener()onCheckedChanged()CheckBoxCheckBoxCheckBox

话虽如此,我同意 Waza_Be 的评论。我不喜欢“立即弹出确认对话框”这类场景,尽管有时它们是必要的。如果有一些其他类型的确认步骤作为此 UI 的一部分(例如,“保存”操作栏项),并且您想在该点显示确认对话框,恕我直言,那会更好。

于 2013-02-22T18:35:14.907 回答