Java 单选按钮和按钮在自定义对话框中不执行任何操作
因此,我创建了自定义的Java 单选按钮和按钮在自定义对话框中不执行任何操作,java,android,dialog,Java,Android,Dialog,因此,我创建了自定义的xml对话框,我想对其进行如下编程:它有两个RadioButtons,如果单击其中一个,则会出现一些UI元素,如TextViews和EditTexts,如果选中另一个RadioButton,它们将消失 问题是,Button和RadioButtons没有做任何事情。我已经设置了UI元素的可见性,以便在选中RadioButtons时显示和消失,但它不起作用。与按钮相同,它应该将结果传递到activitesEditText中,但当按下时,它不会执行任何操作 我没有收到任何错误,所
xml
对话框,我想对其进行如下编程:它有两个RadioButton
s,如果单击其中一个,则会出现一些UI元素,如TextView
s和EditTex
ts,如果选中另一个RadioButton
,它们将消失
问题是,Button
和RadioButton
s没有做任何事情。我已经设置了UI元素的可见性,以便在选中RadioButton
s时显示和消失,但它不起作用。与按钮
相同,它应该将结果传递到activitesEditText
中,但当按下时,它不会执行任何操作
我没有收到任何错误,所以请不要要求我发布日志,因为应用程序不会崩溃
下面是该对话框的代码:
statistikeInputDialogKalkulatoriFFMI = (ImageView) findViewById(R.id.statistikeInputDialogKalkulatoriFFMI);
statistikeInputDialogKalkulatoriFFMI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Dialog dialog = new Dialog(StatistikeInputMain.this);
dialog.setContentView(R.layout.dialog_statistike_uredi_ffmi);
dialog.setTitle(getResources().getString(R.string.dialog_uredi1RM));
dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
dialog.show();
RadioGroup radioGrupaDialogFFMI = (RadioGroup) findViewById(R.id.radioGrupaDialogFFMI);
final RadioButton radioButtonDialogFFMIMetric = (RadioButton) findViewById(R.id.radioButtonDialogFFMIMetric);
final RadioButton radioButtonDialogFFMIImperial = (RadioButton) findViewById(R.id.radioButtonDialogFFMIImperial);
textTezinaDialogFFMI = (TextView)dialog. findViewById(R.id.textTezinaDialogFFMI);
textBodyFatDialogFFMI = (TextView)dialog. findViewById(R.id.textBodyFatDialogFFMI);
textVisinaDialogMetricFFMI = (TextView)dialog. findViewById(R.id.textVisinaDialogMetricFFMI);
textVisinaDialogImperialFFMI = (TextView)dialog. findViewById(R.id.textVisinaDialogImperialFFMI);
editTezinaDialogFFMI = (EditText)dialog. findViewById(R.id.editTezinaDialogFFMI);
editBodyFatDialogFFMI = (EditText)dialog. findViewById(R.id.editBodyFatDialogFFMI);
editVisinaDialogMetricFFMI = (EditText)dialog. findViewById(R.id.editVisinaDialogMetricFFMI);
editVisinaDialogImperialFFMIFEET = (EditText)dialog. findViewById(R.id.editVisinaDialogImperialFFMIFEET);
editVisinaDialogImperialFFMIINCH = (EditText)dialog. findViewById(R.id.editVisinaDialogImperialFFMIINCH);
buttonDialogIzracunajFFMI = (Button)dialog. findViewById(R.id.buttonDialogIzracunajFFMI);
editTextStatistikeFFMI = (EditText)dialog. findViewById(R.id.editTextStatistikeFFMI);
textVisinaDialogMetricFFMI.setVisibility(View.GONE);
textVisinaDialogImperialFFMI.setVisibility(View.GONE);
editVisinaDialogMetricFFMI.setVisibility(View.GONE);
editVisinaDialogImperialFFMIFEET.setVisibility(View.GONE);
editVisinaDialogImperialFFMIINCH.setVisibility(View.GONE);
switch (v.getId()) {
case R.id.radioButtonDialogFFMIMetric:
boolean checked = ((RadioButton) v).isChecked();
if (checked)
textTezinaDialogFFMI.setVisibility(View.VISIBLE);
textBodyFatDialogFFMI.setVisibility(View.VISIBLE);
textVisinaDialogMetricFFMI.setVisibility(View.VISIBLE);
editTezinaDialogFFMI.setVisibility(View.VISIBLE);
editBodyFatDialogFFMI.setVisibility(View.VISIBLE);
editVisinaDialogMetricFFMI.setVisibility(View.VISIBLE);
buttonDialogIzracunajFFMI.setVisibility(View.VISIBLE);
buttonDialogIzracunajFFMI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double tezina = Double.parseDouble(editTezinaDialogFFMI.getText().toString());
double bodyfat = Double.parseDouble(editBodyFatDialogFFMI.getText().toString());
double visina = Double.parseDouble(editVisinaDialogMetricFFMI.getText().toString());
double rezultatLean = 0;
double rezultatFFMI = 0;
rezultatLean = tezina * (1.0 - (bodyfat / 100.0));
rezultatLean = Math.round(rezultatLean * 100.0) / 100.0;
rezultatFFMI = (rezultatLean / 2.2) / (((visina / 2.54) * 0.0254) * ((visina / 2.54) * 0.0254)) * 2.20462;
rezultatFFMI = Math.round(rezultatFFMI * 100.0) / 100.0;
editTextStatistikeFFMI.setText(Double.toString(rezultatFFMI));
dialog.dismiss();
}
});
case R.id.radioButtonDialogFFMIImperial:
boolean checked1 = ((RadioButton) v).isChecked();
if (checked1)
textTezinaDialogFFMI.setVisibility(View.VISIBLE);
textBodyFatDialogFFMI.setVisibility(View.VISIBLE);
textVisinaDialogImperialFFMI.setVisibility(View.VISIBLE);
editTezinaDialogFFMI.setVisibility(View.VISIBLE);
editBodyFatDialogFFMI.setVisibility(View.VISIBLE);
editVisinaDialogImperialFFMIFEET.setVisibility(View.VISIBLE);
editVisinaDialogImperialFFMIINCH.setVisibility(View.VISIBLE);
buttonDialogIzracunajFFMI.setVisibility(View.VISIBLE);
buttonDialogIzracunajFFMI.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double tezina = Double.parseDouble(editTezinaDialogFFMI.getText().toString());
double bodyfat = Double.parseDouble(editBodyFatDialogFFMI.getText().toString());
double visinaFEET = Double.parseDouble(editVisinaDialogImperialFFMIFEET.getText().toString());
double visinaINCH = Double.parseDouble(editVisinaDialogImperialFFMIINCH.getText().toString());
double rezultatLean = 0;
double rezultatFFMI = 0;
rezultatLean = tezina * (1.0 - (bodyfat / 100.0));
rezultatLean = Math.round(rezultatLean * 100.0) / 100.0;
rezultatFFMI = (rezultatLean / 2.2) / (((visinaFEET * 12.0 + visinaINCH) * 0.0254) * ((visinaFEET * 12.0 + visinaINCH) * 0.0254));
rezultatFFMI = Math.round(rezultatFFMI * 100.0) / 100.0;
editTextStatistikeFFMI.setText(Double.toString(rezultatFFMI));
dialog.dismiss();
}
});
}
OnClick回调中的所有隐藏/显示+查看膨胀逻辑都是错误的,所有这些逻辑都应该写入DialogFragment类中(使用DialogFragment而不是正在使用的对话框,因为这是推荐的方式) 隐藏和显示UI控件以及对话框按钮和RadioButton的ClickListener的逻辑应该分别编写-例如:在对话框片段的OnCreate中。在
对话框的父视图中使用Clickable=“true”