爲什麼EditText instanceof調用不起作用,但TextView instanceof調用是?EditText和instanceof不工作?
我可以用泛型或其他更好的方式解決這個問題嗎?
public class MyActivity extends ActionBarActivity
...
@Override
public void updateView() {
updateField(noteEditText, vault.getNote());
updateField(categoryTextView, category.getName());
}
private void updateField(View current, String data) {
if(current instanceof EditText && data.equals(((EditText) current).getText())) {
((EditText) current).setText(data);
} else if(current instanceof TextView && data.equals(((TextView) current).getText())) {
((TextView) current).setText(data);
}
}
...
基本上是因爲你忽略了''&&。 'instanceOf'可以正常工作,但是從中獲取字符串的方式是錯誤的。 '((EditText)current).getText()'返回一個'Editable'對象,而不是字符串。所以**一個條件的運營商,是不正確的**。 '((EditText)current).getText()。toString()'是你想要的。 –