2016-04-03 56 views
0

所以我创建的自定义xml对话,我想它喜欢这个节目:它有两个RadioButton S和如果被点击一些UI元素,如TextView S和EditTex TS出现,他们如果其他RadioButton被选中,则消失。单选按钮和按键自定义没有做任何事情对话框

问题是,ButtonRadioButton s没有做任何事情。我已经设置了UI元素的可见性,因为RadioButton被选中,但它不起作用。与Button一样,它应该将结果传递给EditText,但按下时它什么也不做。

我没有得到任何错误,所以请不要让我发布logcats,因为应用程序不会崩溃。

下面是对话的代码:

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(); 


         } 

        }); 
      } 
+0

在'dialog_statistike_uredi_ffmi.xml'内的父视图中使用'Clickable =“true”' – Kathi

+0

不能正常工作.... – DaxHR

回答

0

你所有的隐藏/显示+视图的OnClick回调这是不对的内部通货膨胀的逻辑,所有这一切都应该将DialogFragment类(使用DialogFragment而不是内被写入您正在使用的对话框,因为它是推荐的方式)

隐藏和显示您的UI控件以及对话框的Button和RadioButton的clickListeners的逻辑应该分开编写 - 例如:在OnCreate你的DialogFragment。