两个文本字段之间的乘法 - Android Java

时间:2013-02-28 20:10:13

标签: java android eclipse

我是Android和编程的新手,我的代码遇到了一些困难。我试图研究这个,但无法找出问题所在,希望得到帮助。我基本上试图将两个值相乘但每次运行我的模拟器并单击按钮(计算)时它会崩溃:

Java代码:

 package com.example.cantcook;

 import java.math.BigDecimal;

 import android.app.Activity;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;

public class Calculator extends Activity {
    EditText costofmeal, amountofpeople;
    TextView costperperson;
    Button Calculate;
    BigDecimal costNum, percentNum;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        costofmeal = (EditText) findViewById(R.id.editText1); 
        amountofpeople = (EditText) findViewById(R.id.editText2);

        Calculate = (Button) findViewById(R.id.button1);

        costperperson = (TextView) findViewById(R.id.textView2);
        //costperperson.setText("£0.00");


        Calculate.setOnClickListener(new View.OnClickListener()
        {

        public void onClick (View v)
        {
            costNum = new BigDecimal(costofmeal.getText().toString());
            percentNum = new BigDecimal(amountofpeople.getText().toString());
            costperperson.setText(costNum.multiply(percentNum).toString());
        }
        });
    }

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:background="@drawable/background"
    tools:context=".Calculator" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="25dp"
        android:text="£"
        android:textAlignment="center"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="112dp"
        android:text="  Total spent on Shopping"
        android:textAlignment="center"
        android:textSize="18dp"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="  Amount of People"
        android:textAlignment="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="18dp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView2"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="25dp"
        android:onClick="Btncalculate"
        android:text="Calculate" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="22dp"
        android:ems="10"
        android:inputType="numberSigned" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="17dp"
        android:ems="10"
        android:inputType="numberDecimal"
        android:text="£" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

在xml布局中,button1中有android:onClick="Btncalculate"。这样做的是当点击发生时,Android会尝试在您的活动中查找Btncalculate方法。而且我假设你没有它,因为你正在为button1使用OnClickListener(在我看来,这比使用android:onClick更好)。

从xml文件中删除android:onClick="Btncalculate"它应该可以工作(除非有其他错误,在这种情况下,查看堆栈跟踪会很棒)。

<强>更新

来自你的堆栈跟踪:

  

java.lang.NumberFormatException:£5

看起来你的代码试图将“£5”放入BigDecimal,这是不允许的,因为它不是一个数字。要解决此问题,您可以将android:inputType设置为editText1中的数字并移除android:text="£",也可以使用单独的方法从输入中过滤掉£符号。