2016-12-07 62 views
0

我有這些單選按鈕一個RadioGroup中內設置:單選檢查編程不會取消

<RadioGroup 
      android:id="@+id/radioGroupLeakTight" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

    <RadioButton 
       android:text="@string/action_yes" 
       android:id="@+id/radioLeakTightYes" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

    <RadioButton 
       android:text="@string/action_no" 
       android:id="@+id/radioLeakTightNo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

</RadioGroup> 

有了下面的代碼我嘗試切換單選按鈕中的一個通過代碼:

radioGroupLeakTight.check((currentTask.isLeakTight() ? R.id.radioLeakTightYes : R.id.radioLeakTightNo)); 

如果我不使用上面的代碼,RadioButtons按預期工作:無論何時被檢查,另一個被取消選中。如果我使用代碼預先檢查其中一個RadioButton,則此功能會丟失。每當我嘗試檢查一個RadioButton時,另一個仍然被檢查。

我讀過解決方案,我應該實施'OnCheckedChangeListener'並自行切換。但我想這只是掩蓋其他不起作用的東西,不是嗎?我也讀過有這些問題的人,但他們沒有RadioGroup,我清楚地知道。

我在做什麼錯?唯一的解決方案是真正實施「OnCheckedChangeListener」並自己切換其他RadioButton嗎?

UPDATE 2016年8月12日:

所以,我繼續我的搜索並實施 'OnCheckedChanged'。我現在看到的是,無論何時我檢查其中一個RadioButton,這個事件都不會被解僱。監聽器設置在2個RadioGroup上。 我開始懷疑這些RadioButtons會失去他們的RadioGroup的會員資格?每當我通過代碼檢查它們(在設置我的偵聽器之後),事件被成功觸發。

回答

0

對RadioGroups使用clearCheck()Learn more。 如果您需要檢查另一個RadioButton,則可以在此之後執行此操作。

每當我嘗試檢查一個RadioButton時,另一個仍然被檢查。

RadioButton radioLeakTightYes = (RadioButton) findViewById(...); 
RadioButton radioLeakTightNo = (RadioButton) findViewById(...); 

radioGroupLeakTight.clearCheck(); 
if(currentTask.isLeakTight()){ 
    radioGroupLeakTight.check(radioLeakTightYes.getId()); 
} else { 
    radioGroupLeakTight.check(radioLeakTightNo.getId()); 
} 
+0

使用clearCheck表示我應該實現偵聽器。這真的是唯一的方法嗎? –

+0

編輯會給你一個我的意思的想法。這是否適用? – rupinderjeet

+0

對不起,也許我的問題還不夠清楚。我知道如何通過代碼清除和切換RadioButton。但是當我以編程方式檢查其中的一個時,當用戶嘗試使用它時,自動切換功能會丟失。這兩個值將被檢查。 –

相關問題