0

我在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 个值时,它才会正确显示加法,奇怪的是,如果我什至没有输入一个值它显示为零,无法理解问题出在哪里

4

2 回答 2

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

于 2013-01-29T10:28:14.140 回答
0

你有一个 try-catch 并且你在 catch 中什么也不做。这通常是不好的做法,因为您不知道代码中何时发生任何事情。

在这种情况下,当您尝试解析空字符串时, Double.parseDouble 会引发异常。 ""不能解析为双精度。 "0"能够。

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

于 2013-01-29T11:00:38.710 回答