我試圖執行一個RadioGroup中有四個的ToggleButtons。期望的行爲是典型的無線電設備組的行爲:一個按鈕被預選,如果用戶點擊另一按鈕,前一個未被選擇和新的一個,而不是選擇。如果用戶再次單擊所選按鈕,則不會發生任何事情,因爲它不允許沒有選擇任何按鈕。那就是我遇到問題的地方。我跟着要解決這個問題:Android: How to get a radiogroup with togglebuttons?radioGroup中使用的ToggleButtons不能正常工作
不幸的是,用戶仍然能夠取消激活鍵。我怎樣才能防止這一點?
繼承人我的代碼:
的onclick偵聽器的ToggleButtons:
/**
* Handler for onClick Events.
*/
@Override
public void onClick(View v) {
if (viewListener == null) {
return;
}
if (v == tb_one|| v == tb_two|| v == tb_three|| v == tb_four) {
((RadioGroup) v.getParent()).check(v.getId());
}
else {
super.onClick(v);
}
}
我定製OnCheckedChangeListener:
/**
* The listener for a checked change event of the toggle buttons.
*/
static final RadioGroup.OnCheckedChangeListener ToggleListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(final RadioGroup radioGroup, final int i) {
//if one button is checked, uncheck all others
for (int j = 0; j < radioGroup.getChildCount(); j++) {
final ToggleButton view = (ToggleButton) radioGroup.getChildAt(j);
view.setChecked(view.getId() == i);
}
}
};
而且繼承人,我添加監聽器:(其在onFinishInflate法)
((RadioGroup) findViewById(R.id.instant_toggleGroup_mode))
.setOnCheckedChangeListener(ToggleListener);
tb_one = (ToggleButton) findViewById(R.id.instant_tb_one);
tb_one.setOnClickListener(this);
tb_two = (ToggleButton) findViewById(R.id.instant_tb_two);
tb_two.setOnClickListener(this);
tb_three = (ToggleButton) findViewById(R.id.instant_tb_three);
tb_three.setOnClickListener(this);
tb_four = (ToggleButton) findViewById(R.id.instant_tb_four);
tb_four.setOnClickListener(this);
將是巨大的,如果有人能解決指出我!
感謝您的答案,但它不工作。我仍然可以取消選擇切換按鈕,現在也可以同時激活兩個按鈕。 – friday
@friday我現在用正確的代碼更新了我的答案。雖然這個實現有點「哈克」。 – Ole