【问题标题】:Disable Android checkbox listener禁用 Android 复选框侦听器
【发布时间】:2021-12-09 17:07:47
【问题描述】:

我正在开发一个数据收集应用程序,该应用程序在处于活动状态时会锁定屏幕以防止错误的用户交互。我想在此状态下“锁定”复选框,以防止用户选中或取消选中该框。虽然在此状态下屏幕上的其他按钮仍然“单击”,但(侦听器处于活动状态)当布尔值 bLockedScreen == true 时,它​​们的事件不会执行。我希望我的布尔标志 (bLockedScreen) 在 true 时禁用复选框侦听器。

执行此操作的最佳方法是什么? TIA

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
            ...
            ckbxVerbose = (CheckBox) v.findViewById(R.id.ckbxVerbose);
            return v;
}
public void verbose(){
    if(ckbxVerbose.isChecked()){
        //do something
}

更新:解决了这个问题,

 ckbxVerbose.setEnabled(false);

在设置布尔标志以禁用屏幕小部件的方法中。可能会在收集数据时使用其他不活动的按钮来执行此操作。谢谢阿里王子的回答。

【问题讨论】:

    标签: android android-checkbox android-event


    【解决方案1】:

    您可以通过调用setEnabled 并将其值设置为falsetrue 来禁用或启用复选框。这是一个涉及 2 个CheckBoxes 的最小工作示例,如果选中第一个 CheckBox,则禁用第二个 CheckBox,否则启用它:

    ckbxVerbose.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                        if ( isChecked ) {
                            ckbxVerbose2.setEnabled(false);
                        } else {
                            ckbxVerbose2.setEnabled(true);
                        }
                    }
                }
            );
    

    另一个例子可以是:

    CharSequence str = txt.getText();
            if ( str.equals("Checked") ) {
                ckbxVerbose2.setEnabled(false);
            } else {
                ckbxVerbose2.setEnabled(true);
            }
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2014-03-06
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多