2014-03-06 2 views
0

BMI 계산기를 개발 중입니다. 질량 상태가 다른 이미지를 보여줍니다.조건으로 이미지를 변경하십시오.

하지만 어떻게 해야할지 모르겠으며 R.id.drawable에 오류가 있습니다. 이미지 ID는 "imageBody"입니다.

package com.example.calculadorimc; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.RadioGroup; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
private RadioGroup rgsexo; 
EditText editPeso; 
EditText editAltura; 
TextView imcView; 
SeekBar alterarAltura; 
SeekBar alterarPeso; 
ImageView imagem; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    editPeso = (EditText)findViewById(R.id.editPeso); 
    editAltura = (EditText)findViewById(R.id.editAltura); 
    imcView = (TextView)findViewById(R.id.imcView); 
    alterarAltura = (SeekBar)findViewById(R.id.alterarAltura); 
    alterarPeso = (SeekBar)findViewById(R.id.alterarPeso); 
    imagem = (ImageView)findViewById(R.id.imageBody); 
    alterarAltura.setOnSeekBarChangeListener(alteraralturaListener); 
    alterarPeso.setOnSeekBarChangeListener(alterarpesoListener); 


} 

private OnSeekBarChangeListener alteraralturaListener = new OnSeekBarChangeListener() { 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, 
    boolean fromUser) { 
     // TODO Auto-generated method stub 

     double setAltura = (alterarAltura.getProgress()) * .01d; 
     // mostra na caixa o valor novo 
     editAltura.setText(String.format("%.02f", setAltura).replace(',', '.')); 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 
}; 
private OnSeekBarChangeListener alterarpesoListener = new OnSeekBarChangeListener() { 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, 
    boolean fromUser) { 
     // TODO Auto-generated method stub 
     // Calcula o novo valor do TIP 

     int setPeso = (alterarPeso.getProgress()); 
     // mostra na caixa o valor novo 
     editPeso.setText(String.valueOf(setPeso)); 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 
}; 
public void calculateClickHandler(View view) { 

    // make sure we handle the click of the calculator button 

    if (view.getId() == R.id.botaoCalcular) { 

    // get the users values from the widget references 

    float peso = Float.parseFloat(editPeso.getText().toString()); 
    float altura = Float.parseFloat(editAltura.getText().toString()); 

    // calculate the bmi value 

    float imcValue = calcularIMC(peso, altura); 


    // interpret the meaning of the bmi value 
    String imcInterpretation = interpretIMC(imcValue); 

    // now set the value in the result text 

    imcView.setText(String.format("%.02f", imcValue).replace(',', '.') + "-" + imcInterpretation); 
    } 
    } 
    // the formula to calculate the BMI index 

    // check for http://en.wikipedia.org/wiki/Body_mass_index 
    private float calcularIMC (float peso, float altura) { 

    return (float) (peso/(altura * altura)); 
    } 

    // interpret what BMI means 
    private String interpretIMC(float imcValue) {   

     imagem = (ImageView)findViewById(R.id.imageBody); 
     int res; 

     rgsexo = (RadioGroup)findViewById(R.id.rgSexo); 
     int selectedId = rgsexo.getCheckedRadioButtonId(); // get the id 

     switch (selectedId) // switch on the button selected 
     { 
      case R.id.radioMasc: 
       if (imcValue < 20) { 
        res = r.drawable.slim; 
        return "Abaixo do Peso"; 
        } else if (imcValue < 24.9) { 
         res = r.drawable.normal; 
        return "Peso Normal"; 
        } else if (imcValue < 29.9) { 
         res = r.drawable.fat; 
        return "Acima do Peso"; 
        } else if (imcValue < 39.9) { 
         res = r.drawable.fat; 
        return "Obesidade Moderada"; 
        } else { 
         res = r.drawable.fat; 
        return "Obesidade Mórbida"; 
        } 
      case R.id.radioFem: 
       if (imcValue < 19) { 
        return "Abaixo do Peso"; 
        } else if (imcValue < 23.9) { 

        return "Peso Normal"; 
        } else if (imcValue < 28.9) { 

        return "Acima do Peso"; 
        } else if (imcValue < 38.9) { 

        return "Obesidade Moderada"; 
        } else { 
        return "Obesidade Mórbida"; 
        } 
     } 
    return null; 
    } 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

귀하의 모든 지원에 감사드립니다.

imagem = (ImageView)findViewById(R.id.imageBody); 
imagem.setImageResource(R.drawable.my_image); 

는 또한 당신에게 R 클래스 ID를 제공하지 않습니다 rgsexo.getCheckedRadioButtonId() 그 방법을 참고하지만, ID는 당신이에 설정해야합니다 :)

+0

: 그래서 모든 방법이 될 것

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId(); View radioButton = radioButtonGroup.findViewById(radioButtonID); int idx = radioButtonGroup.indexOfChild(radioButton); 

을 : 어쩌면 그것은 다음과 같이 인덱스를 통해 그룹에 두 개의 버튼을 다를 것이 좋습니다 R은 대문자로해야합니까? 이미지를 변경하려면 imagem.setImageResource (R.drawable.something) – Gak2

답변

1

는이 같은 ImageView에 새 이미지를 설정해야합니다 버튼을 통해 setId(int id) 메서드를 통해, 즉 XML 레이아웃 파일에. "r.drawable.slim;"

private String interpretIMC(float imcValue) {   
    imagem = (ImageView)findViewById(R.id.imageBody); 

    rgsexo = (RadioGroup)findViewById(R.id.rgSexo); 
    int selectedId = rgsexo.getCheckedRadioButtonId(); // get the id 
    View radioButton = radioButtonGroup.findViewById(radioButtonID); 
    int idx = radioButtonGroup.indexOfChild(radioButton); 

    switch (idx) // switch on the button selected 
    { 
     case 0: 
      if (imcValue < 20) { 
       imagem.setImageResource(R.drawable.slim); 
       return "Abaixo do Peso"; 
      } else if (imcValue < 24.9) { 
       imagem.setImageResource(R.drawable.normal); 
       return "Peso Normal"; 
      } else if (imcValue < 29.9) { 
       imagem.setImageResource(R.drawable.fat); 
       return "Acima do Peso"; 
      } else if (imcValue < 39.9) { 
       imagem.setImageResource(R.drawable.fat); 
       return "Obesidade Moderada"; 
      } else { 
       imagem.setImageResource(R.drawable.fat); 
       return "Obesidade Mórbida"; 
      } 
      break; 
     case 1: 
      if (imcValue < 19) { 
       return "Abaixo do Peso"; 
      } else if (imcValue < 23.9) { 
       return "Peso Normal"; 
      } else if (imcValue < 28.9) { 
       return "Acima do Peso"; 
      } else if (imcValue < 38.9) { 
       return "Obesidade Moderada"; 
      } else { 
       return "Obesidade Mórbida"; 
      } 
     break; 
    } 
} 
+0

고마워요 ... 그것은 내가 생각했던 것보다 더 기뻤습니다 :) –

관련 문제