关于setError的TextInputLayout NullPointerException

时间:2016-06-27 14:00:40

标签: android android-textinputlayout textinputlayout

我使用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

仅供参考,同样的策略早些时候有效,但在这种情况下,似乎有点遗漏。无法弄清楚为什么?!

1 个答案:

答案 0 :(得分:0)

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

<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,要使样式工作,必须使用本地上下文而不是应用程序级上下文来定义它们。

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