我想仅使用1个EditText
框来开发一个简单的计算器。没有错误,但它没有运行。每当按任何按钮,我的应用程序意外停止。我尝试了一切。我使用了相同的代码并使用3个EditText
框制作了一个计算器,它工作正常。我无法理解错误是什么。
package com.example.cal;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
EditText text1 ;
Button add,subtract,mul,div,result;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (EditText) findViewById(R.id.editText1);
add= (Button)findViewById(R.id.button1);
add.setOnClickListener(this);
subtract= (Button)findViewById(R.id.button2);
subtract.setOnClickListener(this);
mul= (Button)findViewById(R.id.button3);
mul.setOnClickListener(this);
div= (Button)findViewById(R.id.button4);
div.setOnClickListener(this);
result= (Button)findViewById(R.id.button5);
result.setOnClickListener(this);
}
float c=0;
public void onClick(View view) {
float inputValue1 = Float.parseFloat(text1.getText().toString());
float inputValue2;
switch(view.getId())
{
case R.id.button1:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue1 =inputValue1+ Float.parseFloat(text1.getText().toString());
case R.id.button2:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
text1.setText("");
inputValue2 = Float.parseFloat(text1.getText().toString());
c=inputValue1-inputValue2;
break;
case R.id.button3:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
text1.setText("");
inputValue2 = Float.parseFloat(text1.getText().toString());
c=inputValue1*inputValue2;
break;
case R.id.button4:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
text1.setText("");
inputValue2 = Float.parseFloat(text1.getText().toString());
c=inputValue1/inputValue2;
break;
}
if(view.getId()==R.id.button5)
{Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
text1.setText("result is: "+inputValue1);}
}
}
这是我的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/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="34dp"
android:layout_marginTop="18dp"
android:ems="10"
android:inputType="numberSigned|numberDecimal" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editText1"
android:layout_marginLeft="35dp"
android:layout_marginTop="27dp"
android:onClick="onClick"
android:text="@string/add" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button1"
android:layout_alignBottom="@+id/button1"
android:layout_alignRight="@+id/editText1"
android:onClick="onClick"
android:text="@string/subtract" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/editText1"
android:layout_below="@+id/button1"
android:layout_marginTop="34dp"
android:onClick="onClick"
android:text="@string/mul" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button3"
android:layout_alignBottom="@+id/button3"
android:layout_alignLeft="@+id/button2"
android:onClick="onClick"
android:text="@string/div" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button3"
android:layout_marginTop="24dp"
android:layout_toRightOf="@+id/button3"
android:onClick="onClick"
android:text="@string/result" />
答案 0 :(得分:2)
现在它工作正常你可以尝试dis
package com.example.testandroid;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
EditText text1 ;
Button add,subtract,mul,div,result;
float inputValue1 ;
float inputValue2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (EditText) findViewById(R.id.editText1);
add= (Button)findViewById(R.id.button1);
add.setOnClickListener(this);
subtract= (Button)findViewById(R.id.button2);
subtract.setOnClickListener(this);
mul= (Button)findViewById(R.id.button3);
mul.setOnClickListener(this);
div= (Button)findViewById(R.id.button4);
div.setOnClickListener(this);
result= (Button)findViewById(R.id.button5);
result.setOnClickListener(this);
}
float c=0;
public void onClick(View view) {
try{
Log.d("Input data ", Float.valueOf(text1.getText().toString()).toString());
inputValue1 = Float.valueOf(text1.getText().toString());
switch(view.getId())
{
case R.id.button1:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue1 =inputValue1+ Float.valueOf(text1.getText().toString());
case R.id.button2:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue2 = Float.valueOf(text1.getText().toString());
c=inputValue1-inputValue2;
break;
case R.id.button3:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue2 = Float.valueOf(text1.getText().toString());
c=inputValue1*inputValue2;
break;
case R.id.button4:
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue2 = Float.valueOf(text1.getText().toString());
c=inputValue1/inputValue2;
break;
}
if(view.getId()==R.id.button5)
{Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
text1.setText("result is: "+inputValue1);}
}catch (Exception e) {
Log.d("Exception", e.getMessage());
}
}
}
答案 1 :(得分:1)
问题是编辑文本中有空字符串 尝试使用
try{
//onclick code
}
catch( NumberFormatException ex ) {
Log.d("Exception",":"+ex.getMessage());
}
另一件事是您将编辑文本设置为空并在其上获取其值
Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
ext1.setText("");
inputValue2 = Float.parseFloat(text1.getText().toString());
c=inputValue1-inputValue2;
在从edittext
获取值之后设置为空 Toast.makeText(view.getContext(), "activated", Toast.LENGTH_LONG).show();
inputValue2 = Float.parseFloat(text1.getText().toString());
c=inputValue1-inputValue2;
text1.setText("");