2015-04-23 20 views
1

我的活動內部稱爲(計算BMI)的方法應該計算並顯示BMI(基於公式代碼),並在textview中顯示其值。應用程序運行正常,但顯示的值始終爲零。我正在努力弄清楚問題是否存在於我的公式中(不太可能),或者如果我傳遞值的方式不正確。任何幫助,將不勝感激。下面(Android)試圖瞭解爲什麼我的方法不會在textview中計算/顯示正確的值

的.java代碼文件

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.view.View; 
import android.widget.Toast; 


public class Health extends ActionBarActivity { 
    EditText bloodPressure; 
    EditText cholesterol; 
    int weight; 
    int height; 
    EditText heightString; 
    EditText age; 
    TextView bmiText; 
    EditText weightString; 
    MyDBHandler dbHandler; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_health); 
     weightString = (EditText) findViewById(R.id.weightTextBox); 

     heightString =(EditText) findViewById(R.id.heightTextBox); 

     bmiText = (TextView) findViewById(R.id.bmiTextView); 
     bloodPressure = (EditText) findViewById(R.id.bloodPressureTextBox); 
     cholesterol = (EditText) findViewById(R.id.cholesterolTextBox); 
     age = (EditText) findViewById(R.id.ageTextBox); 
     dbHandler = new MyDBHandler(this, null, null, 1); 
    } 

    public void calculateBMI(View view) 
    { 
     weight = Integer.parseInt(weightString.getText().toString()); 
     height = Integer.parseInt(heightString.getText().toString()); 
     int BMI = 703 * (weight/(height*height)); 
     bmiText.setText("Your calculated BMI is: " + Integer.toString(BMI)); 
     Toast.makeText(Health.this, " Info Saved ", Toast.LENGTH_SHORT).show(); 
     HealthInfo healthInfo = new HealthInfo(bloodPressure.getText().toString(),cholesterol.getText().toString(),heightString.getText().toString(),weightString.getText().toString(),age.getText().toString()); 
     dbHandler.addHealth(healthInfo); 

    } 

    public void calorieClick(View view){ 
     Intent i = new Intent(this, CalorieTracker.class); 
     startActivity(i); 
    } 

    public void openTips(View view){ 
     Intent i = new Intent(this, HealthTipsActivity.class); 
     startActivity(i); 
    } 

    public void openPlans(View view){ 
     Intent i = new Intent(this, DietPlansActivity.class); 
     startActivity(i); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_health, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

.XML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="seniorproject.broncos.broncowellnessapp.Health" 
    android:background="#006699"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="@string/blood_pressure_text" 
     android:id="@+id/bloodPressureTextView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="@string/cholesterol_text" 
     android:id="@+id/cholesterolTextView" 
     android:layout_below="@+id/bloodPressureTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="35dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="@string/weight_text" 
     android:id="@+id/weightTextView" 
     android:layout_below="@+id/cholesterolTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="35dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="@string/height_text" 
     android:id="@+id/heightTextView" 
     android:layout_below="@+id/weightTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="35dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="@string/age_text" 
     android:id="@+id/ageTextView" 
     android:layout_below="@+id/heightTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="35dp" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="text" 
     android:ems="10" 
     android:width="150dp" 
     android:id="@+id/bloodPressureTextBox" 
     android:layout_below="@+id/bloodPressureTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:width="150dp" 
     android:id="@+id/cholesterolTextBox" 
     android:layout_below="@+id/cholesterolTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:width="150dp" 
     android:id="@+id/weightTextBox" 
     android:layout_below="@+id/weightTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:width="150dp" 
     android:id="@+id/heightTextBox" 
     android:layout_below="@+id/heightTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:ems="10" 
     android:width="150dp" 
     android:id="@+id/ageTextBox" 
     android:layout_below="@+id/ageTextView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/diet_plans_button_text" 
     android:onClick="openPlans" 
     android:id="@+id/dietPlansButton" 
     android:layout_below="@+id/ageTextBox" 
     android:layout_marginTop="40dp" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/calorie_tracker_button" 
     android:id="@+id/calorieAccessButton" 
     android:layout_below="@+id/dietPlansButton" 
     android:onClick ="calorieClick" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/tips_button_text" 
     android:id="@+id/tipsButton" 
     android:onClick="openTips" 
     android:layout_below="@+id/calorieAccessButton" 
     android:layout_alignRight="@+id/calorieAccessButton" 
     android:layout_alignEnd="@+id/calorieAccessButton" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/BMI_button_text" 
     android:id="@+id/bmiButton" 
     android:onClick="calculateBMI" 
     android:layout_alignBottom="@+id/cholesterolTextBox" 
     android:layout_alignRight="@+id/dietPlansButton" 
     android:layout_alignEnd="@+id/dietPlansButton" 
     android:layout_marginRight="36dp" 
     android:layout_marginEnd="36dp" 
     android:background="#ff00b812" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="Push Button to Compute BMI" 
     android:id="@+id/bmiTextView" 
     android:layout_alignBottom="@+id/weightTextBox" 
     android:layout_alignLeft="@+id/bmiButton" 
     android:layout_alignStart="@+id/bmiButton" /> 
</RelativeLayout> 

回答

1

weightheight變量int。那是你的問題。他們更改爲floatdouble

目前,你正在做的整數除法這是造成結果如下截斷:1/20

0

您正在爲整數,結果大多是零師。 這就是爲什麼結果總是爲零的原因。

將您的體重和身高變量加倍,如 ,並將結果轉換回int。

double weight = 0.0; 
double height = 0.0; 

int BMI = (int)(703 * (weight/(height*height))); 
bmiText.setText("Your calculated BMI is: " + Integer.toString(BMI)); 
0

將這個在onCreate()方法的末尾:

findViewById(R.id.bmiButton).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      weight = Integer.parseInt(weightString.getText().toString()); 
      height = Integer.parseInt(heightString.getText().toString()); 
      int BMI = 703 * (weight/(height*height)); 
      bmiText.setText("Your calculated BMI is: " + Integer.toString(BMI)); 
      Toast.makeText(Health.this, " Info Saved ", Toast.LENGTH_SHORT).show(); 
      HealthInfo healthInfo = new HealthInfo(bloodPressure.getText().toString(),cholesterol.getText().toString(),heightString.getText().toString(),weightString.getText().toString(),age.getText().toString()); 
      dbHandler.addHealth(healthInfo); 
     } 
}); 

一些Android版本不支持onclick屬性在XAML按鈕標籤。

相關問題