2016-06-27 17 views
0

Я использую TextInputLayout в качестве контейнера для хранения кода страны и номера телефона. У меня есть собственный стиль для этого контейнера.TextInputLayout NullPointerException on setError

<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> 

Когда я пытаюсь setError на это, я получаю следующее сообщение об ошибке:

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

FYI, та же стратегия worke d раньше, но в этом случае что-то кажется промахом. Не могу понять, почему ?!

ответ

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, для стилей, чтобы работать, они должны быть определены с местным контекстом и не контекст уровня приложения.

Теперь я до сих пор не совсем понимаю, что это значит. Я прочитаю немного больше об этом, но если у вас есть дополнительная информация, pls действительно разделяют.

Смежные вопросы