我將支持lib版本更新爲24.2.0,現在我的註冊屏幕已經死機。問題是在TextInputLayout,我有兩種方法:TextInputLayout setError方法在24.2.0中拋出ClassCastException
protected void setError(@Nullable CharSequence errorMsg, @NonNull EditText editText, boolean forceClean) {
TextInputLayout viewParent = (TextInputLayout) editText.getParent();
if (forceClean) {
viewParent.setErrorEnabled(false);
viewParent.setError(null);
}
viewParent.setErrorEnabled(true);
viewParent.setError(errorMsg);
}
protected void clearError(@NonNull EditText editText) {
TextInputLayout viewParent = (TextInputLayout) editText.getParent();
viewParent.setErrorEnabled(false);
viewParent.setError(null);
}
我收到的時候我想的EditText的父轉換爲TextInputLayout,在佈局我有這樣的代碼是一個錯誤:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:id="@+id/login_registration_firstname"
style="@style/registration_form_field"
android:hint="@string/login_registration_firstname"
android:inputType="textCapWords" />
</android.support.design.widget.TextInputLayout>
所以,這個工作完全正常,但現在它拋出ClassCastException異常:
java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.support.design.widget.TextInputLayout
我想知道是否有對一些新的指南?
我想知道,爲什麼像這樣簡單的事情需要解決方法? – Shaishav
@ Shaishav我認爲這是一種反模式 - 他們總是說層次結構應該是平坦的,而且這個層次增加了兩個額外的層次,最開始EditText負責這個 - 只有一個視圖。 –
我不認爲這可能是一個好的解決方案。 Android支持庫團隊可以隨時更改它,並且您還可以使用循環在視圖層次結構中導航,並測試每個視圖是否爲實例。只需使用InputTextLayout作爲參數即可。 –