2012-12-29 35 views
0

我在我的代碼中遇到了這個問題,我找不到原因。基本上,我將android:text設置爲「0」,並在使用getText檢查它是否爲「0」時返回false。如果我使用setText將其設置爲0並再次檢查,則返回true。測試android:文本產生不同的結果,具體取決於它是否已被修改

<TextView android:id="@+id/edit_text" 
     android:text="0" /> 

    TextView calc = (TextView) findViewById(R.id.edit_text); 
    return(calc.getText() == "0"); // false 
    ---- 
    calc.setText("0"); 
    return(calc.getText() == "0"); // true 

這是爲什麼發生?如何檢查calc.getText()是否爲0?

回答

2

你從來沒有比較對象(StringCharSequence一個子類,這是Object子類,我建議你與他們合作,而不是CharSequence)與==,自認爲比較引用,而不是實際對象的內容。所有對象都有一個equals()方法,但字符串defintely定製它(覆蓋)以實現檢查字符串比較是否相同。

而是做calc.getText().toString().equals ("0");

所以在使用它的原因的方面 - Android可以在指定爲「0」,爲您創造一個又一個一個對象,然後。使用equals()可以解決此問題,因爲它首先檢查內容,然後給出結果(true/false)。

+0

這是正確的。 –

+0

謝謝。非常清楚,最後的編輯。 – lisovaccaro

+0

@ Liso22沒問題:) –

相關問題