Android 如何侦听签入的复选框和ID?

Android 如何侦听签入的复选框和ID?,android,android-checkbox,Android,Android Checkbox,setOnClickListener(…)和setOnCheckedChangeListener()int复选框之间有什么区别?我怎么能听到国家改变了 。。。setOnCheckedChangeListener()。。。我怎么能听到国家改变了 您基本上回答了自己的问题:使用setOnCheckedChangeListener()可以收到检查状态更改的通知 “On checked change”在状态更改时触发,这可能是由于用户单击,或者是因为您的程序将复选框标记为选中。单击侦听器仅在用户单击复选

setOnClickListener(…)
setOnCheckedChangeListener()
int
复选框之间有什么区别?我怎么能听到国家改变了

。。。setOnCheckedChangeListener()。。。我怎么能听到国家改变了

您基本上回答了自己的问题:使用
setOnCheckedChangeListener()
可以收到检查状态更改的通知

“On checked change”在状态更改时触发,这可能是由于用户单击,或者是因为您的程序将复选框标记为选中。单击侦听器仅在用户单击复选框时激发。根据需要,您可能需要使用其中一个。

所有视图(textView、imageView、editText等)都有类似的属性,如onClickListener。但每个项目也有自己的特定属性


例如,CheckBox具有onCheckChangeListener或editText具有onTextChangeListener。

使用OnCheckedChangeListener,每当选中状态更改时,即使使用.setChecked()在代码中完成,您也会收到一个事件

根据您正在执行的操作,这可能会导致意外行为(例如,当您在listview中有一个复选框时,该视图会被回收,并且复选框状态会以编程方式修改,看起来与用户单击它的方式完全相同)


因此,当您编写的代码应该对单击复选框的用户做出反应时,您应该使用OnClickListener。

我有一个想法,当我单击复选框时,复选框的状态可以保持原始状态

mCheckBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mCheckBox.setChecked(mCheckBox.isChecked());
        }
    });

你检查过这两种方法的文档了吗?对不起,没有详细询问。当我单击复选框时,如何停止状态更改,它会显示一个对话框,当我同意时,选中的状态会更改,当我选择“否”时,复选框不会更改。这意味着,当我单击复选框时,选中的状态必须更改,onClick()可以导致setChecked(),但setChecked()不会导致onClick()。如何控制单击,当我单击时,复选框不会立即更改,但当我同意(如显示对话框)时,选中状态可以更改。对不起,我的英语很差。谢谢。这没用。您正在将
复选框的状态设置为
复选框的状态。这没有任何作用。@DavidWasser这只是为了保持原始状态,我已经说过了。这段代码没有任何作用。此代码不维护或更改原始状态。