为啥 checkbox.IsChecked() 不返回选中状态

Posted

技术标签:

【中文标题】为啥 checkbox.IsChecked() 不返回选中状态【英文标题】:Why does checkbox.IsChecked() not return the checked state为什么 checkbox.IsChecked() 不返回选中状态 【发布时间】:2016-03-16 00:39:08 【问题描述】:

从关于 isChecked() 无法在 android 中运行的大量问题中,我已经接受了要获得 checkbox 的检查状态,您需要添加一个侦听器。但我只是想知道是否有人知道它为什么不能正常工作,这是一个错误吗?我是否误解了所需的功能?

这里有一些代码供您参考。

            View itemView = adapter.getView(i, null, autoDiscoverListView);

            CheckBox selected = (CheckBox)itemView.findViewById(R.id.cbEnabled);

            if(selected.isChecked())
                ...
            

这是getView中与复选框相关的代码

        CheckBox cbEnabled = (CheckBox) convertView.findViewById(R.id.cbEnabled);
        cbEnabled.setChecked(item.getEnabled());

        cbEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
            public void onCheckedChanged(CompoundButton compoundButton, boolean enabled) 
                ...
        );

【问题讨论】:

你有没有通过在sysout上打印selected.isChecked()的值来检查.. Logcat 你能用xml发布完整的代码吗? 它似乎正在工作...***.com/questions/18336151/… 默认不勾选..thtsy返回false..你必须添加listner 您的 CheckBox 似乎在 ListView 项目布局中。如果您在其中的某些侦听器中得到错误的检查状态,我们需要查看您的 getView() 方法。 【参考方案1】:

我认为你的代码有错误,请尝试如下,

public void itemClicked(View v) 
        //code to check if this checkbox is checked!
        CheckBox checkBox = (CheckBox)v;
        if(checkBox.isChecked())

        
    

【讨论】:

好的,所以如果我添加一个 onClickListener 那么它确实可以正常工作,但是你能用我的错误来编辑答案吗?为什么我无法使用(CheckBox)itemView.findViewById(R.id.cbEnabled); 获得复选框【参考方案2】:

你必须使用like。

//返回此视图的启用状态。 selected.isEnabled() //如果启用此视图,则返回 True,否则返回 false。

//表示视图当前是否处于按下状态。 selected.isPressed() //如果启用此视图,则返回 True,否则返回 false。

【讨论】:

感谢您的回答,如果您查看我的代码,那么希望很明显我正在使用已启用,我的问题是即使它是错误的,它也会返回 true。抱歉,如果我的问题对您不明确。 也许你不应该检查类的 onCreate() 中的状态。 我不是,对不起,我不明白你在哪里做出这些假设,为了更好地表达我的帖子,请你告诉我你是如何得出你的结论的。我认为这很明显,但显然不是。【参考方案3】:

我知道isChecked() 方法正常工作。我怀疑你没有得到正确的观点。目前,我只有一个建议,因为我不太了解您的代码。

View itemView = adapter.getView(i, null, convertView);

注意:此代码在您设置侦听器时引用 View 对象convertView。至少convertView 对听众有效。

【讨论】:

以上是关于为啥 checkbox.IsChecked() 不返回选中状态的主要内容,如果未能解决你的问题,请参考以下文章

如何在不引发事件的情况下设置 checkbox.isChecked

WPF 数据绑定 CheckBox.IsChecked

为啥绑定表达式在 OneWay 模式下分离?

wpf datagrid中添加一列checkbox,反复点选,会出现checkbox框偏移,请wpf大神帮忙!

如何正确使用带有if语句的bool?

Libgdx 之CheckBox ScrollPane