2011-08-07 14 views
0

私はEditTextビューで小さなcalcアプリケーションを作成しています。ユーザーがEditTextビューを空のままにして、ParseIntを試してパースしない場合、ランタイム例外が発生します。私はそれが発生する前に、私は '試して'このエラーを 'キャッチ'する必要があることを読んだが、私はどこでこれを行う方法がわからない!ParseInt Exception

アドバイスはありがとうございます!ここで

は私のコードです:

public class HandlerExamples extends Activity implements OnClickListener { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button button = (Button)findViewById(R.id.testButton); 
     button.setOnClickListener(this); 

public void onClick(View v) { 
      String a,b,t; 
      double vis; 

      EditText txtbox1 = (EditText)findViewById(R.id.A); 
       EditText txtbox2 = (EditText)findViewById(R.id.B); 
       EditText txtbox3 = (EditText)findViewById(R.id.t); 
       TextView tv = (TextView) findViewById(R.id.Answer); 

      a = txtbox1.getText().toString(); 
      b = txtbox2.getText().toString(); 
      t = txtbox3.getText().toString(); 

      vis = ((Integer.parseInt(a)*1) + (Integer.parseInt(b)*2))/(Double.parseDouble(t)); 
      tv.setText(double.toString(vis));  
    } 
} 

本当にありがとうございました!

答えて

0
public void onClick(View v) { 
    int id = v.getId(); 
    switch(id){ 
    case R.id.xx: 
     //do things xx click 
     break; 
    case R.id.yy: 
     //do things yy click 
     break; 
    } 
} 

あなたがクリックされたwhickウィジェットを知るためにビューIDを取得することができます。

+0

私は、ParseIntegerの問題に遭遇し、実行時にエラーが発生していることがわかりました。私は適切に質問を編集しました。ありがとう! – phi16181

0

Changweiヤオは、あなたがこれを行うことができます一つの方法を定義したが、ここでそれは読んで、あなたのウィジェットが何をしているかを把握するために少し簡単なので、ほとんどのAndroidプログラマは(プログラムで)これを行うだろう方法です:

しかし、最初に必要がない場合は、アクティビティからimplements OnClickListenerを削除してください。

button.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // what you want your button to do when clicked 
    } 
} 
editText.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // what you want your EditText to do when clicked 
     // (such as editText.setText("")) 
    } 
} 

同じことを行う別の方法は、あなたがクリックしたときにアクションを実行したいウィジェットのandroid:onClick="insert_method_name_here"を定義することです。あなたのケースでは、あなたのmain.xmlに(それはあなたがあなたの活動に使用しているものだからです)、あなたが何かのような...

<Button android:id="@+id/testButton" 
    (other attributes you wish to apply to the button) 
    android:onClick="buttonAction" /> 
<EditText 
    (other attributes) 
    android:onClick="textAction" /> 

を書くことができそして、あなたのアクティビティでは、メソッドbuttonAction(View v)を定義し、 textAction(View v)。これらのメソッドはpublic voidでなければならず、唯一の引数View vを使用する必要があることに注意してください。

(XMLメソッドの利点の1つは、これらのウィジェットの操作やコードからの情報の抽出が必要な場合を除いて、android:id属性を必ずしも定義する必要はないということです。 )

0

空のテキストフィールドを除外する必要がある場合は、hotveryspicyの解決策がおそらく最も早いでしょう。これは、ユーザーの入力が必要なのでにandroid:idを定義する必要があります。セキュアなソリューションの場合:NumberFormatExceptionをキャッチすると、整数に変換できないものがフィルタリングされます。

int vis; 
try { 
    vis = Integer.parseInt(a); 
} 
catch(NumberFormatException nfe) { 
    Log.e(TAG,"trying to convert:"+a+" to integer failed"); 
    vis = 0; 
}