2014-03-04 68 views
0

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

`

<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)); 
     } 
    }); 
} 
}' 
+2

您应该粘贴logcat的输出,以便我们可以看到错误 – eugecm

+0

的确切原因,并请下次在代码中分离XML。自动突出显示检测不适用于此处的混合代码。 – Christian

+0

onCreate()用于初始化所有UI组件。你不能得到任何文字值util onClick() – yushulx

回答

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具有空间值,您将其更改为整数。你的错误!