源代码检查请 - 宏营养计算器

时间:2013-11-24 10:34:26

标签: java android android-layout textview calculator

我对Android Dev很新,而且编程也很好, 我正在为大学做一个项目,做一个宏观营养计算器,根据他们的目标,为用户提供当天的卡路里需求,

我几乎完成了(我将很快实现更多功能)只是想完成这个基本功能,

这一切似乎都运行正常,但名为“displayValue”的textView没有输出结果, 有人可以给我一些建议吗?

ANDROID XML-LAYOUT

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="62dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="20dp"
        android:src="@drawable/bmr_logo" />

    <EditText
        android:id="@+id/weightInput"
         android:layout_width="130dp"
        android:layout_height="30dp"
       android:layout_marginTop="175dp"
        android:layout_marginLeft="75dp"
        android:ems="10"
        android:hint="@string/defaultText"
        android:inputType="numberDecimal"
        android:textSize="13sp" />

    <Button
        android:id="@+id/maintButton"
         android:layout_width="75dp"
        android:layout_height="30dp"
        android:layout_marginTop="265dp"
        android:layout_marginLeft="115dp"
        android:text="Calculate"
        android:textSize="12sp" />

    <Button
        android:id="@+id/bulkButton"
        android:layout_width="75dp"
        android:layout_height="30dp"
        android:layout_marginTop="265dp"
        android:layout_marginLeft="225dp"
        android:text="Calculate"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/textView4"
       android:layout_width="85dp"
        android:layout_height="15dp"
        android:layout_marginTop="250dp"
        android:layout_marginLeft="220dp"
        android:text="Gain Weight" />

    <Button
        android:id="@+id/cutButton"
        android:layout_width="75dp"
        android:layout_height="30dp"
        android:layout_marginTop="265dp"
        android:layout_marginLeft="15dp"
        android:text="Calculate"
        android:textSize="12sp" />

    <EditText
        android:id="@+id/heightInput"
      android:layout_width="130dp"
        android:layout_height="30dp"
       android:layout_marginTop="135dp"
        android:layout_marginLeft="75dp"
        android:ems="10"
        android:hint="@string/defaultText"
        android:inputType="numberDecimal"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="45dp"
        android:layout_height="15dp"
        android:layout_marginTop="180dp"
        android:layout_marginLeft="15dp"
        android:text="Weight:" />

    <TextView
        android:id="@+id/displayValue"
        android:layout_width="75dp"
        android:layout_height="wrap_content"
         android:layout_marginTop="310dp"
        android:layout_marginLeft="115dp"
        android:textSize="12pt" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="105dp"
        android:layout_height="15dp"
        android:layout_marginTop="250dp"
        android:layout_marginLeft="105dp"
        android:text="Maintain Weight" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="75dp"
        android:layout_height="15dp"
        android:layout_marginTop="250dp"
        android:layout_marginLeft="15dp"
        android:text="Cut Weight" />

    <EditText
        android:id="@+id/ageInput"
        android:layout_width="130dp"
        android:layout_height="30dp"
        android:layout_marginTop="90dp"
        android:layout_marginLeft="75dp"
        android:ems="10"
        android:hint="@string/defaultText"
        android:inputType="number"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/textHeight"
       android:layout_width="45dp"
        android:layout_height="15dp"
        android:layout_marginTop="140dp"
        android:layout_marginLeft="15dp"
        android:text="Height:" />

    <TextView
        android:id="@+id/textAge"
        android:layout_width="25dp"
        android:layout_height="15dp"
        android:layout_below="@+id/imageView1"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        android:text="Age:" />

</RelativeLayout>

JAVA CODE

package app.college.fitnessapp;

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Macros extends Activity implements OnClickListener {

    EditText ageInput;
    EditText heightInput;
    EditText weightInput;

    Button cutButton;
    Button maintButton;
    Button bulkButton;

    TextView displayValue;

    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.macro_layout);

     // Find elements from the layout and Define them
        ageInput = (EditText) findViewById(R.id.ageInput);
        heightInput = (EditText) findViewById(R.id.heightInput);
        weightInput = (EditText) findViewById(R.id.weightInput);

        cutButton = (Button) findViewById(R.id.cutButton);
        maintButton = (Button) findViewById(R.id.maintButton);
        bulkButton = (Button) findViewById(R.id.bulkButton);

        displayValue = (TextView) findViewById(R.id.displayValue);

        //Set button listeners
        cutButton.setOnClickListener(this);
        maintButton.setOnClickListener(this);
        bulkButton.setOnClickListener(this);


    }


    @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        int ageNum = 0;
        int weightNum = 0;
        int heightNum = 0;
        int result = 0;
        int calculate = 0;
        int percentAdd = 0;

        // Test to see if fields are empty
        if (TextUtils.isEmpty(ageInput.getText().toString())
            || TextUtils.isEmpty(heightInput.getText().toString())
            || TextUtils.isEmpty(weightInput.getText().toString())) {
          return;
        }

        // This is to read the Edit Text fields from the layout and fill the Variables with Numbers
        ageNum =  Integer.parseInt(ageInput.getText().toString());
        weightNum = Integer.parseInt(weightInput.getText().toString());
        heightNum = Integer.parseInt(heightInput.getText().toString());

        //Defines which button has been clicked and will calculate accordingly
        switch (v.getId()) {
        case R.id.cutButton:
              calculate = (10*weightNum) + (6*heightNum) - (5*ageNum) + 5;
            percentAdd =  (calculate*1);
            result = calculate + percentAdd;
          break;
        case R.id.maintButton:
        calculate = (10*weightNum) + (6*heightNum) - (5*ageNum) + 5;
        percentAdd =  (calculate*1);
        result = calculate + percentAdd;
          break;
        case R.id.bulkButton:
            calculate = (10*weightNum) + (6*heightNum) - (5*ageNum) + 5;
            percentAdd = (calculate*1);
            result = calculate + percentAdd;
          break;
        default:
          break;
        }

        //Displays the output
        displayValue.setText(String.valueOf(result));
      }
    }

我感觉这是displayValue输出的最后一行,

解决了这个问题...... 如果我将我的变量如ageNum,weightNum等变为浮点数并将字符串解析为Float i然后得到此错误“TextView类型中的方法setText(CharSequence)不适用于参数(float)” 但是,如果我将它们定义为Ints并将字符串解析为Int i,则不会出现错误,但没有输出, 我宁愿输出为浮点数,只是用户输入的重量为78.5或者其他东西,

这是我现在唯一的问题, 我没有得到任何输出:(在displayValue Textview

有什么建议吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

  

然后得到此错误“类型中的方法setText(CharSequence)   TextView不适用于参数(float)“

您必须使用接受实现setText()接口的对象的CharSequence方法(即String类)。您可以使用静态方法String.valueOf(float value)

displayValue.setText(String.valueOf(result)); 

答案 1 :(得分:0)

setText(...)java.lang.CharSequence作为参数(例如java.lang.String)。您正在通过int

查看String课程,将int等文字转换为String