输入验证不工作android studio

时间:2016-03-28 04:52:47

标签: java android validation android-studio

由于某种原因,我的输入验证无效。每次我把它计算它崩溃“app”时它应该有一个错误说我需要输入身高/体重。当我输入它确实计算的数字时。谢谢您的帮助 :)。我是android studio的新手。

这是我的计算java文件

public class BmiFrag extends Fragment implements View.OnClickListener {
Button BmiButton;
private  double weight1=0;
private  double height1=0;
public static EditText heightIn;
public static EditText weightIn;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {


    View myView = inflater.inflate(R.layout.fragment_bmi, container, false);
   BmiButton = (Button) myView.findViewById(R.id.CalculateBmi);
    BmiButton.setOnClickListener(this);
    return myView;
}

    @Override
     public void onClick(View v) {
         switch (v.getId()) {

        case R.id.CalculateBmi:







            weightIn = (EditText)
           getActivity().findViewById(R.id.ETtweight);
            heightIn = (EditText) getActivity().findViewById(R.id.ETHeight);
               final TextView tv4 = (TextView) 
         getActivity().findViewById(R.id.TFDisplayBmi);
            String str1 = weightIn.getText().toString();
            String str2 = heightIn.getText().toString();

            float weight = Float.parseFloat(str1);
            float height = Float.parseFloat(str2) ;

            float bmiValue = calculateBMI(weight, height);

            String bmiInterpretation = interpretBMI(bmiValue);

            tv4.setText(String.valueOf(bmiValue + "-" + bmiInterpretation));




            if (TextUtils.isEmpty(str1)) {



                weightIn.setError("Please enter your weight");
                weightIn.requestFocus();
                return;
            }

            else if (TextUtils.isEmpty(str2)) {
                heightIn.setError("Please enter your height");
                heightIn.requestFocus();
                return;
            }



            break;






    }
    }











   private float calculateBMI(float weight, float height) {

  float bmi= (float) (weight/ (height*height)*4.88);

        float total= Math.round(bmi);



       return  total;
   }


    private String interpretBMI(float bmiValue) {

      if (bmiValue < 16) {
          return "Severely underweight";
      } else if (bmiValue < 18.5) {

        return "Underweight";
        } else if (bmiValue < 25) {

          return "Normal";
       } else if (bmiValue < 30) {

          return "Overweight";
       } else {
           return "Obese";


       }


   }


    @Override
   public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
   }

   @Override
   public void onDestroy() {


   }

  @Override
   public void onDetach() {
      super.onDetach();
  }

}

3 个答案:

答案 0 :(得分:0)

if (TextUtils.isEmpty(str1)) {



                weightIn.setError("Please enter your weight");
                weightIn.requestFocus();
                return;
            }

           if (TextUtils.isEmpty(str2)) {
                heightIn.setError("Please enter your height");
                heightIn.requestFocus();
                return;
            }

答案 1 :(得分:0)

尝试更改以下代码,

        if (TextUtils.isEmpty(str1)) {
            weightIn.setError("Please enter your weight");
            weightIn.requestFocus();
            return;
        }
        else if (TextUtils.isEmpty(str2)) {
            heightIn.setError("Please enter your height");
            heightIn.requestFocus();
            return;
        }else{
        float weight = Float.parseFloat(str1);
        float height = Float.parseFloat(str2) ;

        float bmiValue = calculateBMI(weight, height);

        String bmiInterpretation = interpretBMI(bmiValue);

        tv4.setText(String.valueOf(bmiValue + "-" + bmiInterpretation));
      }

答案 2 :(得分:0)

首先,将缩进和变量名称排序。永远不要命名变量str1,str2:总是有意义的名称。缩进应始终保持一致。这将有助于解决未来的可读性和速度问题。

在您通过

实际输入和分配内容后,您正在进行输入验证

calculateBMI() method

您的代码部分内容为:让我们从文本字段中获取文本,解释BMI,然后查看文本字段是否为空