在我的Android应用程序中,需要在用户更改无线电组选择之前发出通知(警告)消息。
当我点击那个Radio groiup中的任何其他单选按钮时,我正在尝试给出一个对话框消息(有警告消息和YES / NO按钮以确认更改)。 如果用户按YES,则更改用户想要更改的readio按钮选择,否则(如果按NO)选择返回之前选择的内容。
在收听onCheckedChanged
时,我在OnCheckedChangeListener
方法中看不到任何选项。什么是最好的方法来做到这一点。感谢
EDITS
我在onCheckedChanged
方法中提供来自Dialog的警告消息,并带有确认更改的选项(使用YES / NO按钮)。问题是当用户在看到警告后不想要新的选择时,我需要一种方法来了解预先选择的单选按钮以恢复用户的新选择。
public void onCheckedChanged(RadioGroup group, int checkedId)
上述方法提供了“checkedId”,但是如何知道之前选择了哪个单选按钮。当用户想要取消更改时,这是必需的。
可以通过跟踪定义类级别变量的更早选择来保存旧的单选按钮ID或其他类似逻辑。但是在Radio组中应该有一种直接的方式来取消新的选择(通过选择旧的选择)。我找了beforeRadioCheckChange Type监听器,但没找到
答案 0 :(得分:0)
您可以存储所选按钮(当您实际设置最初应选中哪个单选按钮时):
int selectedButton = mRadioGroup.getCheckedRadioButtonId();
并在onCheckedChanged回调中更新它:
selectedButton = group.getCheckedRadioButtonId();
当用户确认更改时。否则将检查状态返回到最后一个selectedButton。
答案 1 :(得分:0)
RadioGroup
中没有一种方法可以让您恢复操作,但是您可以通过在外部变量中保留所选RadioButton
的ID来轻松实现此操作,并使用它来还原您的改回来:
RadioGroup radio;
static int buttonChecked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
radio = (RadioGroup) findViewById(R.id.radioGroup);
buttonChecked = radio.getCheckedRadioButtonId(); // be sure to get the checked button id first time before assigning the onCheckedChange
radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// Raise Dialog
if(yes){ // User confirmeed
buttonChecked = checkedId;
}else{ // User refused
if(buttonChecked != -1) // to prevent app from crashing if nothing is already selected
radio.check(buttonChecked);
else
radio.clearCheck();
}
}
});
}