麻烦在android中添加两个数字

时间:2013-09-11 09:31:54

标签: android

在计算两个数字的加法时遇到问题

MainActivity.java

public class MainActivity extends Activity {

    EditText FirstNumber,SecondNumber;
    Button CalculateValue;
    TextView Result;
    int x,y,z;

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

        FindAllTheViews();


        CalculateValue.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                CalculateTheSum();
            }
        });

    }

    private void FindAllTheViews() {
        FirstNumber=(EditText) findViewById(R.id.First_Number);
        SecondNumber=(EditText) findViewById(R.id.Second_Number);
        CalculateValue=(Button) findViewById(R.id.Calculate_Button);
        Result=(TextView) findViewById(R.id.Final_Result);
    }

    private void CalculateTheSum() {
        x=new Integer(FirstNumber.getText().toString());
        y=new Integer(SecondNumber.getText().toString());
        z=x+y;
        Result.setText(z);
    }

}

main.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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/First_Number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView1"
        android:layout_alignBottom="@+id/textView1"
        android:layout_marginLeft="36dp"
        android:layout_toRightOf="@+id/textView1"
        android:ems="10"
        android:hint="Enter Number" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/Second_Number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_alignLeft="@+id/First_Number"
        android:ems="10"
        android:hint="Enter number" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="30dp"
        android:layout_toRightOf="@+id/textView1" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView3"
        android:layout_alignBottom="@+id/textView3"
        android:layout_centerHorizontal="true"
        android:text="WELCOME"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:text="Second-Number" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="46dp"
        android:text="First-Number" />

    <Button
        android:id="@+id/Calculate_Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignRight="@+id/Second_Number"
        android:layout_below="@+id/Second_Number"
        android:layout_marginTop="50dp"
        android:text="Calculate" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/Final_Result"
        android:text="The result is::"
        android:textSize="25sp"
        android:textStyle="bold|normal" />

    <TextView
        android:id="@+id/Final_Result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/Calculate_Button"
        android:layout_below="@+id/Calculate_Button"
        android:layout_marginRight="28dp"
        android:layout_marginTop="45dp"
        android:text="Result"
        android:textSize="25sp" />

</RelativeLayout>

日志

09-11 14:46:22.794: E/AndroidRuntime(410): FATAL EXCEPTION: main
09-11 14:46:22.794: E/AndroidRuntime(410): android.content.res.Resources$NotFoundException: String resource ID #0x64
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.content.res.Resources.getText(Resources.java:201)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.widget.TextView.setText(TextView.java:2857)
09-11 14:46:22.794: E/AndroidRuntime(410):  at com.example.addingtwonumbers.MainActivity.CalculateTheSum(MainActivity.java:49)
09-11 14:46:22.794: E/AndroidRuntime(410):  at com.example.addingtwonumbers.MainActivity.access$0(MainActivity.java:45)
09-11 14:46:22.794: E/AndroidRuntime(410):  at com.example.addingtwonumbers.MainActivity$1.onClick(MainActivity.java:32)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.view.View.performClick(View.java:2485)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.view.View$PerformClick.run(View.java:9080)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.os.Handler.handleCallback(Handler.java:587)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.os.Looper.loop(Looper.java:123)
09-11 14:46:22.794: E/AndroidRuntime(410):  at android.app.ActivityThread.main(ActivityThread.java:3683)
09-11 14:46:22.794: E/AndroidRuntime(410):  at java.lang.reflect.Method.invokeNative(Native Method)
09-11 14:46:22.794: E/AndroidRuntime(410):  at java.lang.reflect.Method.invoke(Method.java:507)
09-11 14:46:22.794: E/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-11 14:46:22.794: E/AndroidRuntime(410):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-11 14:46:22.794: E/AndroidRuntime(410):  at dalvik.system.NativeStart.main(Native Method)

5 个答案:

答案 0 :(得分:1)

使用Integer.toString(z);将z转换为字符串!

答案 1 :(得分:1)

TextView.setText有两种口味。一个接受String并按字面意思显示,另一个接受一个int,并将其用作id来查找适当的资源。

您正在使用第二个显示数字的总和。

您需要先在String中转换int。

另外,您会注意到问题不在于实际添加,因为结果会显示在您发布的堆栈跟踪中(0x64)。

额外提示:要解决此类问题,请查看错误消息,阅读崩溃行(MainActivity.java:49)上使用的方法的文档

答案 2 :(得分:0)

好吧,你试图将整数放入textview。通常,可以使用方法.toString()将对象“转换”为String,而无需显式调用它。在您的情况下,有方法TextView.setText(int resourceId),其中integer指向XML中定义的某些资源。

对于您的情况,您可以使用Integer.toString(z)String.valueOf(z)(实际上是相同的)

答案 3 :(得分:0)

z是一个整数,因此您调用setText (int resid)来尝试加载资源,因为没有id = z的资源会引发错误。 尝试使用setText ("" + z)来呼叫setText (CharSequence text)

答案 4 :(得分:0)

EditText.setText(int resId)未设置resId到EditText,但设置resId引用的内容.try Result.setText(String.valueOf(z))。 并且存在一些不安全的行为。