假设我有2个复选框(" checkbox1"和" checkbox2")并且我设置:SetChecked(true)For" checkbox1"和:SetChcked(false)为" checkbox2"。我的目的是关联它们并在我点击其中一个时切换检查状态,(如果"复选框1和#34;检查并且我检查了#34;复选框2"然后"复选框2&# 34;将被检查," checkbox1"将被取消选中,反之亦然) 这是我的代码:
require 'thread'
queue = Queue.new
producer = Thread.new do
5.times do |i|
sleep rand(i) # simulate expense
queue << i
puts "#{i} produced"
end
end
consumer = Thread.new do
5.times do |i|
value = queue.pop
sleep rand(i/2) # simulate expense
puts "consumed #{value}"
end
end
consumer.join
当我通过可见性运行应用程序时,当我点击&#34; ChckBoxYes&#34;它被检查了&#34; ChckboxNo&#34;未经检查,反之,但它总是得到我在实现&#34; OnCheckedChangeListener&#34;之前设置的默认值。 (ChckBoxNo.SetChcked(true),ChckBoxYes.SetChecked(false),即使其对面和&#34; ChckBoxYes&#34;被chcked) 我该怎么办才能解决这个问题? 谢谢 !
答案 0 :(得分:1)
这不是解决问题的正确方法。幸运的是,已经有一个名为RadioGroup的内置组件。你可以这样做:
让您的Activity的xml文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:id="@+id/radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/radio_button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox1" />
<RadioButton
android:id="@+id/radio_button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CheckBox2" />
</RadioGroup>
</LinearLayout>
在您的活动中,您可以与此组件进行交互,并在点击任何RadioButton时处理您想要的任何内容:
public class MainActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.radio_button1) {
//First is checked
} else if (checkedId == R.id.radio_button2) {
// Second is checked
}
}
});
}
}