Android计算器应用

时间:2014-03-04 23:09:59

标签: android xml

我是Android应用开发的新手。我正在android中构建一个基本的计算器应用程序。我在代码中没有编译时错误,但是当我尝试运行此应用程序时,它显示“不幸的是计算器已停止工作”。我一个接一个地复制了XML Layout和.java文件。

`

<LinearLayout 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/input1"/>

    <EditText 
        android:id="@+id/ed1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/input1"/>
</LinearLayout>

<LinearLayout 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tv3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/input2"/>

    <EditText 
        android:id="@+id/ed3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:hint="@string/input2"/>
</LinearLayout>

<LinearLayout 
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/result"/>

    <EditText 
        android:id="@+id/ed2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/result"/>
</LinearLayout>

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="20dp" >

    <Button
        android:id="@+id/btn1" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/add"/>

    <Button
        android:id="@+id/btn2" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/sub"/>

</LinearLayout>

<LinearLayout 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn3" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/mul"/>

    <Button
        android:id="@+id/btn4" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="@string/div"/>

</LinearLayout>
</LinearLayout>









package com.example.calculator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity
{
public Integer int3;

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

    final EditText input1=(EditText) findViewById(R.id.ed1);
    final EditText input2=(EditText) findViewById(R.id.ed2);

    final Integer int1=Integer.parseInt(input1.getText().toString());
    final Integer int2=Integer.parseInt(input2.getText().toString());

    Button add=(Button) findViewById(R.id.btn1);
    add.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            int3=int1+int2;
        }
    });

    Button sub=(Button) findViewById(R.id.btn2);
    sub.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            int3=int1-int2;
        }
    });

    Button mul=(Button) findViewById(R.id.btn3);
    mul.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            int3=int1*int2;
        }
    });

    Button div=(Button) findViewById(R.id.btn4);
    div.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            int3=int1/int2;
        }
    }); 

    final EditText result=(EditText) findViewById(R.id.ed2);
    result.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            result.setText(Integer.toString(int3));
        }
    });
}
}'

1 个答案:

答案 0 :(得分:1)

请勿在onCreate()

上添加此项
  final Integer int1=Integer.parseInt(input1.getText().toString());
  final Integer int2=Integer.parseInt(input2.getText().toString()); )

删除它!!

否则,您必须在创建onClickListener时添加此转换语句! 你应该在每个像这样的onClick方法中添加这些行。

  add.setOnClickListener(new OnClickListener()
  {
    @Override
    public void onClick(View v)
    {
        Integer int1=Integer.parseInt(input1.getText().toString());
        Integer int2=Integer.parseInt(input2.getText().toString());
        int3=int1+int2;
    }
  });

 Button sub=(Button) findViewById(R.id.btn2);
 sub.setOnClickListener(new OnClickListener()
 {
    @Override
    public void onClick(View v)
     {
        Integer int1=Integer.parseInt(input1.getText().toString());
        Integer int2=Integer.parseInt(input2.getText().toString());
        int3=int1-int2;
     }
 });

没有错误。 另外你应该考虑点击没有edittext值的方法,它只会导致你得到的错误!实际上,你必须将null(空格)值赋给整数。您的错误是将空间置于整数。 Edittext具有空格值,您将其更改为整数。你的错误!!