添加edittext值始终返回零

时间:2013-01-29 10:16:01

标签: android android-edittext textview

我在activitya中有10个edittext值,我想添加它们并在newactivity中显示结果。

我的代码

    public class activitya extends Activity implements onclicklistener
    {
      private EditText editext1;
      private EditText editext2;
      private EditText editext3;
      private EditText editext4;
      private EditText editext5;
      private Button calculate;

      protected void onCreate(Bundle savedInstanceState) 
          {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activitya);
            calculate =(Button)findviewbyid(R.id.button1);
            calculate.setonclicklistener(this);

          }

       public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.button1:
      onadd();
      break;
      default:
      break;
   }

     }
public void onadd()
{

    Bundle bundle = new Bundle();
    String value1 = editext1.getText().toString();
    String value2 =editext2.getText().toString();
    bundle.putString("sendvalue1",value1));
    bundle.putString("sendvalue2",value2));

      try{
     Double Total =Double.parseDouble(value1)+Double.parseDouble(value2);}
      catch(NumberFormatException e)
     {
      e.printstacktrace();
      }
     bundle.putString("totalvalue",String.valueof(Total));

   Intent a = new intent(this,newactivity.class);
    a.putExtras(bundle);
    startactivity(a);

   }
   }
新活动中的

 public class newactivity extends activity{
  private TextView total;

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        total =(TextView)findviewbyid(R.id.text1);
    onview();

}

   public void onview()
 {
 Bundle bundle = this.getIntent().getExtras();
 String param1 = bundle.getString("totalvalue");
        total.setText(param1);

 }

只有当我输入所有10个值时才会正确显示添加,很奇怪 如果我甚至不输入一个值,它显示为零, 无法理解问题所在

2 个答案:

答案 0 :(得分:0)

在添加所有值之前检查所有EditText长度。

像,

if(EditText1.getText.length()==0){
 Toast.makeText(YourActivity.this,"All fields are mandatory ",
                                    Toast.LENGTH_LONG).show();
}else if(EditText2.getText.length()==0){
} else if(){
..........
 }else{
 }  

您将避免NullPointerException

答案 1 :(得分:0)

你有一个尝试捕获,你没有做任何事情。这通常是不好的做法,因为您不知道代码中何时发生任何事情。

在这种情况下,当您尝试解析空字符串时,Double.parseDouble会抛出异常。 ""无法解析为double。 "0"可以。

您需要确保每个编辑文本都包含一个可以解析为double的有效值,或者在尝试解析之前测试每个值。