2013-07-22 19 views
1

我是一名Android初學者,我試圖構建一個將EditTexts'加在一起的簡單應用程序。我找到了這個例子,但它不適合我。 我得到一個錯誤(在代碼的最後一行),它指出「無法在原語double上調用toString()」。無法在原語雙引號上調用toString()

我做了什麼錯了?

繼承人我的代碼(就像例):

公共類MainActivity擴展活動{

private EditText editText1, editText2; 
private TextView resultsText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    editText1 = (EditText) findViewById(R.id.editText1); 
    editText2 = (EditText) findViewById(R.id.editText2); 

    resultsText = (TextView) findViewById(R.id.resultsText); 

    TextWatcher textWatcher = new TextWatcher() { 
     public void afterTextChanged(Editable s) { 
      calculateResult(); 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
     } 

     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
     } 
    }; 

    editText1.addTextChangedListener(textWatcher); 
    editText2.addTextChangedListener(textWatcher); 
} 

private void calculateResult() throws NumberFormatException { 

    Editable editableValue1 = editText1.getText(), 
      editableValue2 = editText2.getText(); 

      double value1 = 0.0, 
      value2 = 0.0, 
      result; 

    if (editableValue1 != null) 
     value1 = Double.parseDouble(editableValue1.toString()); 

    if (editableValue2 != null) 
     value1 = Double.parseDouble(editableValue2.toString()); 

    result = value1 * value2; 

    resultsText.setText(result.toString()); 

} 

}

回答

0

做這個resultsText.setText("" + result);

編輯:

原因崩潰很簡單。當你在做 editableValue1 = editText1.getText();它會返回一個有效的可編輯的,如果沒有輸入到編輯文本中,那麼裏面的文本將是一個空字符串。因此,當您在其中一個編輯文本中輸入數字時,關聯的可編輯將返回適當的double值,但對於其他編輯文本框(您尚未輸入任何內容)將返回空字符串,因此您的功能calculateResult()會拋出NumberFormatException。既然你沒有捕捉到這個異常,你的應用就會崩潰。所以爲了使這個長話短,只要你打電話給calculateResult()

public void afterTextChanged(Editable s) { 
    try { 
     calculateResult(); 
    } catch (NumberFormatException e) { 
     e.printStackTrace(); 
    } 
} 
+0

該應用打開很棒。但是當我嘗試向EditText中添加數字時,它會崩潰。任何IdeasI'm也看着其他的想法 – user2607537

+0

它仍然無法正常工作?它究竟在哪裏崩潰?你可以包括你的logcat嗎? – Rajeev

+0

它打開罰款。但是當我嘗試輸入一個數字時,它會崩潰。 – user2607537

2

你不能調用toString的原語。改用String.valueOf(result)。

+0

該應用程序打開很好。但是當我嘗試向EditText中添加數字時,它會崩潰。有任何想法嗎? – user2607537

+0

我也在尋找其他方面來解決它,只是想知道你是否有想法。 – user2607537

+0

像這樣使用Double.parseDouble並不好。任何不是double的字段都會導致拋出異常。例如空格,字母數字字符或甚至空字符串。 – devlish