我是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));
}
});
}
}'
答案 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具有空格值,您将其更改为整数。你的错误!!