【发布时间】:2016-03-16 23:36:54
【问题描述】:
我有一个 TextInputLayout:
<android.support.design.widget.TextInputLayout
android:id="@+id/passwordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="#FFF"
android:theme="@style/TextInputLayoutWhite"
app:errorTextAppearance="@style/ErrorText"
app:hintTextAppearance="@style/TextInputLayoutWhite">
<EditText
android:id="@+id/passwordInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:imeOptions="actionGo"
android:singleLine="true"
android:textColor="#FFF"
app:theme="@style/WhiteEditText">
</EditText>
</android.support.design.widget.TextInputLayout>
我在我的活动中设置了一个错误,如下所示:
passwordLayout.setErrorEnabled(true);
这是在抛出java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
如果我在我的 xml 布局中的 TextInputLayout 上设置 app:errorEnabled,则会显示错误文本,但是我不希望它始终“启用”,因为它为 textview 添加了额外的空间,这在我之前是不必要的需要显示错误。
任何想法为什么会抛出java.lang.UnsupportedOperationException?这是完整的堆栈跟踪:
03-16 19:31:22.078 32577-32577/com.example.myapp W/ResourceType: Too many attribute references, stopped at: 0x01010099
03-16 19:31:22.078 32577-32577/com.example.myapp W/ResourceType: Too many attribute references, stopped at: 0x0101009a
03-16 19:31:22.078 32577-32577/com.example.myapp W/ResourceType: Too many attribute references, stopped at: 0x0101009b
03-16 19:31:22.078 32577-32577/com.example.myapp W/System.err: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at android.content.res.TypedArray.getColor(TypedArray.java:326)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at android.widget.TextView.<init>(TextView.java:635)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at android.widget.TextView.<init>(TextView.java:578)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at android.widget.TextView.<init>(TextView.java:574)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at android.support.design.widget.TextInputLayout.setErrorEnabled(TextInputLayout.java:380)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at com.example.myapp.fragment.LoginFragment.onLoginFailure(LoginFragment.java:86)
03-16 19:31:22.086 32577-32577/com.example.myapp W/System.err: at com.example.myapp.service.AccountService$1.onResponse(AccountService.java:31)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at com.example.myapp.service.AccountService$1.onResponse(AccountService.java:25)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at android.os.Handler.handleCallback(Handler.java:725)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:92)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at android.os.Looper.loop(Looper.java:137)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5041)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at java.lang.reflect.Method.invoke(Method.java:511)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-16 19:31:22.094 32577-32577/com.example.myapp W/System.err: at dalvik.system.NativeStart.main(Native Method)
更新
这是我的ErrorText 风格。请注意,即使我没有设置主题,也会引发上述错误:
<style name="ErrorText" parent="TextAppearance.AppCompat.Small">
<item name="android:textColor">#FFF</item>
</style>
这是我的密码布局的声明:
TextInputLayout passwordLayout = (TextInputLayout) view.findViewById(R.id.passwordLayout);
【问题讨论】:
-
style/ErrorText中有什么内容? -
可以出示
passwordLayout的声明 -
@AhmedHegazy 我用这种风格更新了问题。不过,即使我没有设置任何主题,也会引发此错误。
-
@ZaidQureshi 更新了问题以包含声明
标签: java android android-textinputlayout