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时显示和消失,但它不起作用。与
按钮
相同,它应该将结果传递到activites
EditText
中,但当按下时,它不会执行任何操作

我没有收到任何错误,所以请不要要求我发布日志,因为应用程序不会崩溃

下面是该对话框的代码:

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”