0

计算两个数字相加时遇到问题

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);
    }

}

主要的.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)
4

5 回答 5

1

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

于 2013-09-11T09:34:10.220 回答
1

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

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

您需要先将 int 转换为 String 。

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

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

于 2013-09-11T09:39:14.360 回答
0

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

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

于 2013-09-11T09:35:56.947 回答
0

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

于 2013-09-11T09:37:19.767 回答
0

EditText.setText(int resId) 不是将 resId 设置为 EditText,而是设置 resId 所指的内容。try Result.setText(String.valueOf(z))。并且存在一些不安全的行为。

于 2013-09-11T09:41:10.957 回答