我对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
有什么建议吗?
提前致谢!
答案 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
。