1

私はAndroidとプログラミングに不慣れで、コードに少し問題があります。私はこれを調査しようとしましたが、何が悪いのかを見つけることができませんでした、助けていただければ幸いです。基本的に2つの値を乗算しようとしていますが、エミュレーターを実行してボタンをクリック(計算)するたびにクラッシュします。

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>
4

1 に答える 1

1

あなたのxmlレイアウトではandroid:onClick="Btncalculate"、button1にあります。これが行うことは、クリックが発生したときに Android がアクティビティで Btncalculate メソッドを検索しようとすることです。そして、button1にOnClickListenerを使用しているため(私の意見では、android:onClickを使用するよりも優れています)、そこにそれがないことを前提としています。

xml ファイルから削除するandroid:onClick="Btncalculate"と、動作するはずです (他のエラーがない限り、スタック トレースを確認するとよいでしょう)。

アップデート

スタックトレースから:

java.lang.NumberFormatException: £5

コードが "£5" を BigDecimal に入れようとしているようですが、これは数値ではないため許可されていません。これを修正するには、 and removeでandroid:inputType数値を設定するか、別の方法を使用して入力から符号を除外します。editText1android:text="£"£

于 2013-03-01T00:29:16.817 に答える