2011-08-07 25 views
0

我正在用EditText視圖創建一個小的calc應用程序,當用戶離開EditText視圖時導致ParseInt嘗試並解析任何內容時,運行時出現運行時異常。我讀過,我需要'嘗試'和'趕上'這個錯誤發生之前,但林不知道在哪裏以及如何做到這一點!ParseInt異常

任何意見是非常感謝!

這裏是我的代碼:

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; 
    } 
} 

你可以得到視圖id,知道點擊了什麼小部件。

+0

我發現我遇到了一個ParseInteger問題,這就是在運行時導致錯誤的原因。我已經適當地編輯了這個問題。謝謝! – phi16181

0

長衛姚定義,你可以做到這一點的一種方式,但這裏的方式大多數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方法的一個優點是您不必爲這些小部件定義android:id屬性,除非您需要能夠在代碼中操作它們或從中提取信息(這意味着您將需要爲您的EditText定義android:id,因爲您可能需要用戶的輸入))

0

如果您只需要排除空文本字段,那麼hotveryspicy的解決方案可能是最快的。對於一個安全的解決方案:捕獲NumberFormatException將過濾任何無法轉換爲整數的內容。

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