2017-02-16 18 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);