2013-02-28 67 views
1

我是新来的Android和编程,并与我的代码有点困难。我试图研究这一点,但无法找出什么是错的,将不胜感激的帮助。我基本上是想乘两个值,但每次我跑我的模拟器,然后点击按钮时(计算)崩溃:两个文本字段之间的乘法 - Android Java

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> 
+8

请显示logcat输出。 – Geobits 2013-02-28 20:14:49

回答

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="£",或者使用单独的方法将输入中的£符号过滤掉。

+0

我删除了onClick,它仍然在模拟器运行时崩溃(我按照YouTube教程,忘记删除它)你的意思是“LogCat”,如果是这样,它是http://pastebin.com/LGsYBxCi对不起,如果它一个简单的问题即时通讯新的 – jai 2013-03-01 02:03:53

+0

感谢您的帮助: - 它工作!出于好奇心,我如何让用户输入小数点进入android:id =“@ + id/editText1”(因为它的总购物量) – jai 2013-03-01 03:04:52

+0

您可以在这里找到可用的android:inputType值的完整列表:http:// developer.android.com/reference/android/text/InputType.html你正在寻找的可能是TYPE_NUMBER_FLAG_DECIMAL – 2013-03-01 03:09:22