当用户点击按钮但在editText中没有任何值时,一切都运行得很完美。
我获取editText值并将其放在String中,然后我将String放入Double中。
这是代码:
public class MainActivity extends AppCompatActivity {
EditText editText;
EditText editTextw;
TextView textView7;
TextView textView8;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editTextw = (EditText) findViewById(R.id.with);
textView8 = (TextView) findViewById(R.id.textView5);
textView7 = (TextView) findViewById(R.id.textView3);
final Button button1=(Button)findViewById(R.id.button);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String height = editText.getText().toString();
String weight = editTextw.getText().toString();
Double hh = Double.parseDouble(height);
Double w = Double.parseDouble(weight);
Double h = hh/100;
Double all = (w / (h * h));
Double number2 = (int)Math.round(all * 100)/(double)100;
textView8.setText("BMI: " + number2);
textView8.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
if (all < 18.5) {
textView7.setText("תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"תת משקל\" ");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
} else if (all > 18.5 && all < 25.0) {
textView7.setText("תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"משקל בריא\" ");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else if (all > 25.0 && all < 30.0) {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"עודף משקל\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else if (all > 30.0) {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + " \"השמנת יתר\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + " \"השמנת יתר\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}
}
});
}
}
这里是activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.dor.maby.MainActivity"
android:background="#FF5722"
android:layout_marginTop="0dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="#FAFAFA"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:id="@+id/relativeLayout">
<Button
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="חשב BMI "
android:id="@+id/button"
android:background="#FF7043"
android:layout_centerHorizontal="true"
android:layout_marginTop="180dp"
android:textColor="#FAFAFA"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="גובה"
android:id="@+id/textView"
android:layout_marginTop="42dp"
android:layout_alignParentTop="true"
android:layout_alignEnd="@+id/button" />
<EditText
android:digits="0123456789"
android:inputType="numberDecimal"
android:hint="@string/hint1"
android:textSize="10dp"
android:gravity="center"
android:layout_width="90dp"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignBottom="@+id/textView"
android:layout_alignStart="@+id/button" />
<TextView
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="משקל"
android:id="@+id/textView2"
android:layout_centerVertical="true"
android:layout_alignEnd="@+id/textView" />
<EditText
android:digits="0123456789"
android:inputType="numberDecimal"
android:textSize="10dp"
android:hint="@string/hint"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:id="@+id/with"
android:gravity="center"
android:layout_alignBottom="@+id/textView2"
android:layout_alignStart="@+id/editText" />
</RelativeLayout>
<TextView
android:textSize="34sp"
android:layout_gravity="center_horizontal"
android:textColor="#E3F2FD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/empty"
android:id="@+id/textView5"
android:layout_centerHorizontal="true"
android:layout_marginTop="130dp" />
<TextView
android:gravity="center"
android:textSize="15sp"
android:textColor="#E3F2FD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/empty"
android:id="@+id/textView3"
android:layout_above="@+id/relativeLayout"
android:layout_centerHorizontal="true"
android:layout_marginBottom="85dp" />
</RelativeLayout>
答案 0 :(得分:0)
当时可能会崩溃,因为除了数字之外,parseDouble都会失败。我的建议是检查空字符串,它是一个空字符串,不要解析并将你的双精度值设为默认值。
答案 1 :(得分:0)
在运行onclick代码之前,您应该检查Edittext的值 即
@Override
public void onClick(View v)
{
if(!editText.getText().toString().isEmpty() && !editTextw.getText().toString().isEmpty())
{
String height = editText.getText().toString();
String weight = editTextw.getText().toString();
.... REST of onclick code ....
}
else
{
Toast toast = Toast.makeText(getApplicationContext, "Fill in both texts!", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:0)
检查高度和重量变量是否为空,以便使用它们。我创建了一个辅助方法来进行检查。例如:
//helper method to check if String has null value
private boolean checkNull(String value){
return (value != null && !value.isEmpty());
}
然后在onClick方法中,您可以执行以下操作;
String height = editText.getText().toString().trim();
String weight = editTextw.getText().toString().trim();
if(checkNull(height) && checkNull(weight) ){
Double hh = Double.parseDouble(height);
Double w = Double.parseDouble(weight);
}else{
//make toast with error message
return;
}
答案 3 :(得分:0)
Try this way
public class MainActivity extends AppCompatActivity {
EditText editText;
EditText editTextw;
TextView textView7;
TextView textView8;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editTextw = (EditText) findViewById(R.id.with);
textView8 = (TextView) findViewById(R.id.textView5);
textView7 = (TextView) findViewById(R.id.textView3);
final Button button1=(Button)findViewById(R.id.button);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String height = editText.getText().toString();
String weight = editTextw.getText().toString();
if(height!=null && weight!=null && !height.equals("") && !weight.equals(""))
{
Double hh = Double.parseDouble(height);
Double w = Double.parseDouble(weight);
Double h = hh/100;
Double all = (w / (h * h));
Double number2 = (int)Math.round(all * 100)/(double)100;
textView8.setText("BMI: " + number2);
textView8.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}
if (all < 18.5) {
textView7.setText("תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"תת משקל\" ");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
} else if (all > 18.5 && all < 25.0) {
textView7.setText("תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"משקל בריא\" ");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else if (all > 25.0 && all < 30.0) {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + "\"עודף משקל\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else if (all > 30.0) {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + " \"השמנת יתר\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}else {
textView7.setText(" תוצאה זאת מכניסה אותך לקטגוריה של" +'\n' + " \"השמנת יתר\"");
textView7.setTypeface(textView7.getTypeface(), Typeface.BOLD);
textView7.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.fade_in));
}
}
});
}
}