2012-08-27 76 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 ) –