我创建了我的第一个简单货币转换器应用程序,它以INR作为输入,并以美元作为Toast提供金额。当金额作为输入并且按下“转换”按钮时,应用程序正常工作并返回正确的结果,但是一旦没有给出输入,然后按下“转换”按钮,应用程序崩溃。
以下是.xml
文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="21dp"
android:background="@color/colorPrimary"
android:fontFamily="monospace"
android:padding="20sp"
android:text="INR to USD converter"
android:textColor="@android:color/background_light"
android:textSize="18sp" />
<Button
android:id="@+id/button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/imageView"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"
android:background="@color/colorPrimary"
android:onClick="convert"
android:text="Convert" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="29dp"
app:srcCompat="@drawable/currency" />
<EditText
android:id="@+id/amount"
style="@style/Widget.AppCompat.Light.AutoCompleteTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginBottom="34dp"
android:ems="10"
android:hint="Amount(INR)"
android:inputType="numberDecimal" />
</RelativeLayout>
主要活动的代码:
package com.example.asus.currencyconverter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
public void convert(View view){
EditText amount = (EditText) findViewById(R.id.amount);
Double amountDouble= Double.parseDouble(amount.getText().toString());
Double dollar= amountDouble * 0.01575;
Toast.makeText(MainActivity.this, "$" + dollar.toString(), Toast.LENGTH_LONG).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
}
}
我做错了什么?
答案 0 :(得分:0)
这是因为当您有空EditText
并致电getText()
时,它会返回空字符串,您将其添加到Double.parseDouble()
,这会引发NumberFormatException
。你想先检查你的String是空的。
public void convert(View view) {
EditText amount = (EditText) findViewById(R.id.amount);
String textAmount = amount.getText().toString();
if (!TextUtils.isEmpty(textAmount)) {
Double amountDouble = Double.parseDouble(textAmount);
Double dollar= amountDouble * 0.01575;
Toast.makeText(MainActivity.this, "$" + dollar.toString(), Toast.LENGTH_LONG).show();
}
}
答案 1 :(得分:0)
替换为此代码:
public class MainActivity extends AppCompatActivity {
public EditText amount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
amount = (EditText) findViewById(R.id.amount);
}
public void convert(View view) {
String text = amount.getText().toString();
if (!text.isEmpty()) {
Double amountDouble = Double.parseDouble(text);
Double dollar = amountDouble * 0.01575;
Toast.makeText(MainActivity.this, "$"+dollar.toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Please enter a valid value", Toast.LENGTH_LONG).show();
}
}
}
如果值为空,它将显示一个toast来输入值。