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個すべての値を入力した場合にのみ加算が正しく表示されます。値を1つも入力しないと奇妙で、ゼロが表示され、問題がどこにあるのか理解できませんでした

4

2 に答える 2

0

try-catch があり、catch で何もしません。コードで何かがいつ発生するかわからないため、これは通常悪い習慣です。

この場合、空の文字列を解析しようとしているため、Double.parseDouble は例外をスローしています。 ""double に解析できません。 "0"できる。

すべての編集テキストに double に解析できる有効な値が含まれていることを確認するか、解析を試みる前に各値をテストする必要があります。

于 2013-01-29T11:00:38.710 に答える
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 に答える