2012-08-27 78 views
1

在我Spinner我有一个StringArray它{久坐不动,轻轻地积极,适度活跃和频繁使用的活动}(这是一个人的基础代谢率的计算)安卓微调getselected项目

我想要做的就是在选定项目Spinner

例如,当我点击久坐,为久坐具有1.2的值,的BMRmultiplied通过1.2结果。但我似乎无法为我工作。

请你检查我下面的代码:

private void calculateMen(){  
    String f1 = etft.getText().toString(); 
    String f2 = etin.getText().toString(); 
    String f3 = etweight.getText().toString(); 
    String f4 = etage.getText().toString(); 

    if ((f1.isEmpty() || f2.isEmpty() || f3.isEmpty() || f4.isEmpty())) 
    { // call for custom toast 
     viewErrorToast(); 
    } 
    else 
    { 
     // Metric Formula for BMR (Men) English Unit 
     // 66 + (6.2377 x weight in kilos) + 
     //(12.7084 x height in cm) - (6.7550 x age in years) 
     String age, in, ft, weight; 
     Double answer; 
     age = etage.getText().toString(); 
     in = etin.getText().toString();  
     ft = etft.getText().toString(); 
     weight = etweight.getText().toString(); 

     if (spinnerText.equals("Sedentary")) 
     {  
      answer = ((66 + (6.2377 * Double.parseDouble(weight)) + (12.7084 * (Double.parseDouble(in) * 12 + Double.parseDouble(ft))) - (6.8 * Double.parseDouble(age))) * 1.2); 
      //* Double.parseDouble(actAnswer) ;  
      BigDecimal bd = BigDecimal.valueOf(answer); 
      bd = bd.setScale(2, BigDecimal.ROUND_FLOOR);   
      etanswer.setText(bd.toString()); 
     } 
     else if (spinnerText.equals("Lightly Active")) 
     { 
      answer = ((66 + (6.2377 * Double.parseDouble(weight)) + (12.7084 * (Double.parseDouble(in) * 12 + Double.parseDouble(ft))) - (6.8 * Double.parseDouble(age))) * 1.375); 
      //* Double.parseDouble(actAnswer) ;  
      BigDecimal bd = BigDecimal.valueOf(answer); 
      bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); 
      etanswer.setText(bd.toString()); 
     } 
     else if (spinnerText.equals("Moderately Active")) 
     { 
      answer = ((66 + (6.2377 * Double.parseDouble(weight)) + (12.7084 * (Double.parseDouble(in) * 12 + Double.parseDouble(ft))) - (6.8 * Double.parseDouble(age))) * 1.55); 
      //* Double.parseDouble(actAnswer) ;  
      BigDecimal bd = BigDecimal.valueOf(answer); 
      bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); 
      etanswer.setText(bd.toString()); 
     } 
     else if (spinnerText.equals("Heavily Active")) 
     { 
      answer = ((66 + (6.2377 * Double.parseDouble(weight)) + (12.7084 * (Double.parseDouble(in) * 12 + Double.parseDouble(ft))) - (6.8 * Double.parseDouble(age))) * 1.725); 
      //* Double.parseDouble(actAnswer) ;  
      BigDecimal bd = BigDecimal.valueOf(answer); 
      bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); 
      etanswer.setText(bd.toString()); 
     } 
     // call for custom toast 
     viewBMRSavedToast(); 
    } 

} // end of calculateMen method 
+0

检查你的代码,你应该张贴您的logcat输出 –

+0

我没有看到你的代码中的任何微调。发布一些相关的代码或整个活动 –

回答

1

请尝试修改为下面的代码:

创建一个域:

private HashMap<String, Double> spinnerValues; 

从您的活动的onCreate,请拨打下方功能:

private void createSpinnerValues(){ 
    spinnerValues=new HashMap<String, Double>(); 
    spinnerValues.put("Sedentary", 1.2); 
    spinnerValues.put("Lightly Active", 1.375); 
    spinnerValues.put("Moderately Active", 1.55); 
    spinnerValues.put("Heavily Active", 1.725); 
} 

然后找到你的修改功能,如下计算:

private void calculateMen(){ 

    //Your Code Goes here... 

    String age, in, ft, weight; 
    Double answer; 
    age = etage.getText().toString(); 
    in = etin.getText().toString();  
    ft = etft.getText().toString(); 
    weight = etweight.getText().toString(); 

    answer=getAnswer(age,in,ft,weight,getSelectedItemValueFromSpinnerText(spinnerText)); 

    BigDecimal bd = BigDecimal.valueOf(answer); 
    bd = bd.setScale(2, BigDecimal.ROUND_FLOOR); 

    etanswer.setText(bd.toString()); 

    // call for custom toast 
    viewBMRSavedToast(); 
    } 

private Double getAnswer(String age, String in, String ft, String weight, 
     Double selectedItemValueFromSpinner) { 
    double answer = ((66 + (6.2377 * Double.parseDouble(weight)) + 
      (12.7084 * (Double.parseDouble(in) * 12 + Double.parseDouble(ft))) 
      - (6.8 * Double.parseDouble(age))) * selectedItemValueFromSpinner); 
    return answer; 
} 

private Double getSelectedItemValueFromSpinnerText(String spinnerText) { 
    return spinnerValues.get(spinnerText); 
} 

不要忘了,包括你的现有代码为://你的代码放在这里......

+0

嗨,我试过你的代码,它给了我一个错误 –

+0

它是编译或运行时错误...我还没有试过运行该代码。如果它的编译错误,希望你能修复它。如果运行时错误,请分享logcat输出,以便我可以帮助您在com.fps.iHealthFirst.BMRCalculator.getAnswer(BMRCalculator.java:76)上为您提供 –

+0

08-27 14:52:33.456:E/AndroidRuntime(337):\t ) –