2012-08-27 2 views
1

은 내가 String 그것을 위해 Array {앉아서는, 적당히 활성과 크게 활성화 가볍게 활성} 내가하고 싶은 것은안드로이드 스피너 통해 getSelected 항목

(이 하나의 BMR의 계산이다)이다 얻을이 Spinner에서을 선택한 항목. I는 좌상 들어 좌상 클릭 예

1.2의 값을 1.2 의해 multiplied BMR의 결과를 갖는다. 그러나 나는 그것이 나를 위해 일하게하는 것처럼 보일 수 없다.

아래에 내 코드를 확인주세요 :

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 out put –

+0

코드에 회 전자가 표시되지 않습니다. 일부 관련 코드 또는 전체 활동 게시 –

답변

1

다음과 같이 코드를 수정 해보세요 :

활동의에서 onCreate에서
private HashMap<String, Double> spinnerValues; 

, 아래 전화 :

이 필드 만들기 기능 :

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 출력을 공유하여 도와 드리겠습니다. –

+0

08-27 14 : 52 : 33.456 : E/AndroidRuntime (337) : \t at com.fps.iHealthFirst.BMRCalculator.getAnswer (BMRCalculator.java:76)) –

관련 문제