2017-02-16 157 views
0

我已经阅读了关于这个问题的所有答案,在这里没有任何帮助。CheckBox setChecked没有效果

public class ServerConfigFragment extends Fragment { 

    private CheckBox checkBox_HDMI = null; 
    private Handler updateScreen; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    updateScreen = new Handler(); 

    checkBox_HDMI = (CheckBox) rootView.findViewById(R.id.checkBox_Server_Conf_HDMI); 

    checkBox_HDMI.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){ 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
     { 
      m_commsController.sendCmd(VideoStreamSettings.sendHdmiCommand(isChecked)); 
     } 
    }); 

    final boolean hdmi = getHdmiSettingFromServer(); 

    updateScreen.post(new Runnable() { 
      @Override 
      public void run() { 
       checkBox_HDMI.setSelected(hdmi); 
      } 
      }); 
    } 
} 

因此,在我的应用程序初次启动时,它会查询服务器的hdmi状态,我想设置我的复选框以匹配该复选框。我可以从日志中看到我得到正确的值,但到目前为止,我还没有能够让我的复选框以编程方式检查/关闭。 我试过了,没有Handler,硬编码truefalse分成setChecked(),并且把代码放在onResume。有任何想法吗?

+1

难道你调用'一个错误setSelected(hdmi)'而不是'setChecked()'? –

+0

使用'checkBox_HDMI.setChecked(hdmi);' – king

+0

是的,代码盲+复制和粘贴错误,谢谢你们! – shoota

回答

0

由于您使用的复选框,并希望以编程方式选中该复选框

使用此

checkBox_HDMI.setChecked(hdmi); 

而不是

checkBox_HDMI.setSelected(hdmi);