Java 触摸时如何不选中复选框

Java 触摸时如何不选中复选框,java,android,Java,Android,我有一个复选框,用于切换触摸状态。我想知道如何忽略触摸屏上的状态开关。我有一个onClickListener附加到复选框,在复选框内,我用“是”或“否”按钮更改状态 编辑:当触摸复选框时,复选框将切换,我的“是”按钮也将更改状态 编辑2:我希望我的对话框更改状态,而不是复选框自己更改状态 编辑3: sog.setOnClickListener(new OnClickListener() { @Override public void onClic

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

编辑:当触摸复选框时,复选框将切换,我的“是”按钮也将更改状态

编辑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;
我只是想添加一个从off/on更改的构象

通过
setOnCheckedChangeListener()
复选框上注册一个
OnCheckedChangeListener
。在
onCheckedChanged()
中,如果
复选框
的状态需要进一步确认,请不要选中
复选框
,然后弹出对话框。如果用户点击对话框中的按钮表示不想进行更改,则手动将
复选框的选中状态恢复为其先前的值


尽管如此,我同意瓦扎乌比的评论。我不喜欢“立即弹出确认对话框”之类的场景,尽管有时它们是必要的。如果此UI中有其他类型的确认步骤(例如“保存”操作栏项),并且您希望在该点显示确认对话框,则更好,IMHO.

问题是什么?它显示了一个错误?它什么都不做?你能发布整个onClickListener吗?android:clickable=“false”可能会有所帮助。然后用户无法切换复选框。@Matthieu很抱歉,我忘了添加我将要编辑的内容。您可能希望查看onCheckedChangedListener,而不是OnClickListener,根据我的经验,OnClickListener是复选框的约定:。但是,我不确定我是否完全理解您试图实现的目标。如果您不想让用户检查,为什么要使用
复选框?当用户试图点击<代码>复选框< /代码>时,用户会认为你的应用程序被破坏了,从而改变了它的值,但没有响应。还有许多其他方法可以让用户知道某些状态更改(例如,更改
文本视图中的文本,更改
图像视图中的图标),这些方法不会给用户留下应用程序已损坏的印象。请让
复选框正常工作,或者不要使用
复选框。该答案确实有效。我同意你们两位的观点,触摸后立即弹出确认对话框并不是一个很好的用户体验。我将在离开活动时进行确认。
        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;