【问题标题】:TextInputLayout NullPointerException on setErrorsetError 上的 TextInputLayout NullPointerException
【发布时间】:2016-06-27 14:00:39
【问题描述】:

我使用 TextInputLayout 作为容器来保存国家代码和电话号码。我有这个容器的自定义样式。

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/signin_inputlayout_mobile"
        style="@style/UserAuthField">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Spinner
                android:layout_width="0dp"
                android:layout_weight="22"
                android:layout_height="wrap_content"
                style="@style/region_spinner"
                android:id="@+id/spinner"
                android:prompt="@string/Auth_DialCode">
            </Spinner>

            <EditText
                android:layout_width="0dp"
                android:layout_weight="78"
                style="@style/UserAuthField"
                android:inputType="number"
                android:id="@+id/usr_mobile_uname_login"
                android:hint="@string/Auth_Phone"/>

        </LinearLayout></android.support.design.widget.TextInputLayout>

以下是样式:

<style name="UserAuthField">
    <item name="android:background">@drawable/etborder</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#333333</item>
    <item name="android:textColorHint">#757575</item>
    <item name="android:paddingBottom">4dp</item>
    <item name="android:paddingTop">8dp</item>
</style>

这是层列表:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="1dp" android:left="-3dp" android:right="-3dp" android:top="-3dp">
    <shape android:shape="rectangle">
        <stroke android:width="1dp" android:color="#00FFFFFF"/>
    </shape>
</item>
</layer-list>

当我尝试对此设置错误时,我收到以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundTintList(android.content.res.ColorStateList)' on a null object reference

仅供参考,同样的策略早先奏效了,但在这种情况下,似乎有些失误。不知道为什么?!

【问题讨论】:

    标签: android android-textinputlayout textinputlayout


    【解决方案1】:

    我犯的大错误是在布局根元素的定义中:

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ripple="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    **tools:context="com.viven.android.kahaniya.ActivitySetup"**
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    

    据我从this answer 了解到,要使样式起作用,必须使用本地上下文而不是应用程序级上下文来定义它们。

    现在,我仍然不完全明白这意味着什么。我会阅读更多内容,但如果您有其他信息,请分享。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      相关资源
      最近更新 更多