android - 带有警报框的单选按钮选中的侦听器
问题描述
我希望在单击单选按钮时出现一个警告框。选中时yes
,设置检查,如果未选中,取消选中检查。
我使用无线电组 CheckedChangeListener 和警报对话框尝试了此代码。
public void onRadioButtonChecked() {
Log.v(TAG,"Radio Button : ");
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int buttonId) {
// Check which radio button was clicked
Log.v(TAG,"on checked: value" + radioGroup+" radio "+buttonId);
switch(buttonId) {
case R.id.radioButton:
Log.v(TAG,"radio button1 : ");
openDefault();
break;
case R.id.radioButton2:
Log.v(TAG,"radio button2 : ");
openCalendar();
break;
case R.id.radioButton3:
Log.v(TAG,"radio button3 : ");
openCustom();
}
}
});
}
public void openDefault(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Do you really want to enable Default settings? ");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton1.setChecked(true);
onRadioButtonChecked();
mOutputText.setText("Default Settings\n");
DefaultAlert();
Toast.makeText(MainActivity.this, "Default Settings Enabled",
Toast.LENGTH_SHORT).show();
}
});
alertDialogBuilder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton1.setChecked(false);
onRadioButtonChecked();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
public void openCalendar(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Do you really want to enable Google calendar settings? ");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton2.setChecked(true);
onRadioButtonChecked();
mOutputText.setText("");
getResultsFromApi();
Toast.makeText(MainActivity.this, "Google Calendar Settings Enabled",
Toast.LENGTH_SHORT).show();
}
});
alertDialogBuilder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton2.setChecked(false);
onRadioButtonChecked();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
public void openCustom(){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Do you really want to enable Custom settings? ");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton3.setChecked(true);
onRadioButtonChecked();
Toast.makeText(MainActivity.this, "Custom Settings Enabled",
Toast.LENGTH_SHORT).show();
}
});
alertDialogBuilder.setNegativeButton("No",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
radioGroup.setOnCheckedChangeListener(null);
radiobutton3.setChecked(false);
onRadioButtonChecked();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
如果我选中单选按钮,它会出现警告框,当我按“否”时,它将取消选中。并再次转到同一个收音机并从警报框中按“是”,它不会检查,但会出现 Toast。
是什么问题并给出解决方案。
谢谢你
解决方案
您犯错的第一件事是因为在这里您需要选择,而不是选项,所以请用复选框替换您的单选按钮。
或者打开对话框的解决方案使用复选框注册单击侦听器,或者现在作为单选按钮打开对话框。
用下面我的代码替换您的波纹管代码
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int buttonId) {
// Check which radio button was clicked
Log.v(TAG,"on checked: value" + radioGroup+" radio "+buttonId);
switch(buttonId) {
case R.id.radioButton:
Log.v(TAG,"radio button1 : ");
openDefault();
break;
case R.id.radioButton2:
Log.v(TAG,"radio button2 : ");
openCalendar();
break;
case R.id.radioButton3:
Log.v(TAG,"radio button3 : ");
openCustom();
}
}
});
我的代码
radioButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDefault();
}
});
radioButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openCalendar();
}
});
radioButton3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openCustom();
}
});
推荐阅读
- python - 基于广播变量的pyspark过滤数据帧
- corda - 在 Corda 中,什么使合同具有法律约束力?
- c# - 2 多维数组中的值搜索
- python-3.x - Pod 内存使用量无限增长
- .htaccess - 如何从 php 的 url 中删除斜杠?
- c# - Add localization to an ASP.NET Core 2.0 application
- command-line-interface - 一个 tmux 窗格可以知道在另一个 tmux 窗格中输入了什么吗?
- http - Google 表格 API POST 请求
- visual-studio-code - 在 Visual Studio 代码中隐藏顶部栏(禅模式)
- typescript - 导入 google-cloud/storage 时无法调用类型缺少调用签名的表达式