单击按钮即可关闭我的简单应用

时间:2018-06-24 08:01:21

标签: android

该应用程序应接受两个数字,然后单击按钮,在textView中打印总和。

布局将按预期显示: Layout 但是,单击按钮后,应用程序会像这样Stopping message停止。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <EditText
        android:id="@+id/editText1"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="46dp"
        android:layout_marginTop="88dp"
        android:ems="10"
        android:inputType="number"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="46dp" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignTop="@+id/editText1"
        android:layout_marginEnd="57dp"
        android:ems="10"
        android:inputType="number"
        android:layout_alignParentRight="true"
        android:layout_marginRight="57dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="192dp"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="187dp"
        android:text="Button" />
</RelativeLayout>

而Java文件是

package com.example.home.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextClock;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    EditText et1, et2;
    TextView tv1;
    Button bt1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1 = (EditText) findViewById(R.id.editText1);
        et2 = (EditText) findViewById(R.id.editText2);
        tv1 = (TextView) findViewById(R.id.textView1);
        bt1 = (Button) findViewById(R.id.button1);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num1, num2, res;

                num1 = Integer.parseInt(et1.getText().toString());
                num2 = Integer.parseInt(et2.getText().toString());

                res = num1 + num2;
                tv1.setText(res);
            }
        });
    }
}

当我运行该应用程序时,它会在移动设备以及模拟器上根据需要显示布局。它还可以正确接受两个数字。但是,单击按钮后,该应用程序将停止,如图所示。我正在使用Android 3.1.3。

请告诉我我要去哪里错了?

4 个答案:

答案 0 :(得分:0)

更改此行:tv1.setText(res); 进入这个tv1.setText(String.valueOf(res));

答案 1 :(得分:0)

您正在文本字段中设置一个整数值,这是不允许的。因此,您将获得一个例外。为了解决将整数转换为字符串。

View* view = [[View alloc] autorelease];

还应该应用验证。就像用户单击按钮而不输入任何数字一样,该应用程序将停止。所以你应该添加-

bt1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int num1, num2, res;

         num1 = Integer.parseInt(et1.getText().toString());
         num2 = Integer.parseInt(et2.getText().toString());

         res = num1 + num2;
         tv1.setText("" + res);
    }
});

答案 2 :(得分:0)

res变量应为String类型。

答案 3 :(得分:0)

原因是tv1.setText(res)。有一个参数的两种方法是setText(Int) and setText(CharSequence)。就像在您的代码中一样,您在将res声明为Integer时意外地调用了第一个方法,该方法被解释为资源ID。您应该通过将res转换为String来调用第二个。

只需将行tv1.setText(res);更改为tv1.setText(Integer.toString(res));

package com.example.home.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableStringBuilder;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextClock;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    EditText et1, et2;
    TextView tv1;
    Button bt1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1 = (EditText) findViewById(R.id.editText1);
        et2 = (EditText) findViewById(R.id.editText2);
        tv1 = (TextView) findViewById(R.id.textView1);
        bt1 = (Button) findViewById(R.id.button1);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num1, num2, res;

                num1 = Integer.parseInt(et1.getText().toString());
                num2 = Integer.parseInt(et2.getText().toString());

                res = num1 + num2;
                tv1.setText(Integer.toString(res));
            }
        });
    }
}

您可以阅读TextView documentation,以了解有关其公共方法的更多信息。