我有一組UI元素-TextView,EditText,甚至自定義視圖,它們都有setError(CharSequence error)方法。我正在寫一個簡單的實用程序類,可以幫助我調用setError(null),以便一次性設置它們。對於這一點,我寫了一個實用工具類,其中ValidationUtils相關可以初始化像...如何將Android視圖轉換爲具有特定方法的界面?
ValidationUtils validator = ValidationUtils.getInstance();
validator.put(etEmail);
validator.put(etPassword);
而在一般驗證的put發生在一個視圖對象。 Android View類似乎沒有setError(CharSequence錯誤),但是像EditText這樣的單獨UI類。我想要將所有條目存儲在Map中,然後調用validator.clearAll
來遍歷此映射,並在每個類中調用setError以設置爲null。我已經寫等的接口:
public interface Validatable {
void setError(CharSequence errorMsg);
}
但不能完全弄清楚我如何與製作()通過認沽加元繼續轉型爲這個接口,這樣我可以稍後致電SETERROR。
眼下調用放給我java.lang.ClassCastException: android.support.v7.widget.AppCompatEditText cannot be cast to Validatable
你說得對。但我想我可能找到了解決辦法。庫「butterknife」似乎克服了這個問題,它使用JavaPoet在編譯期間生成代碼來擴展現有的活動類並實現所需的接口(在Butterknife的情況下爲Unbinder),並且可以通過生成的類訪問視圖字段的方法。 –