2015-06-01 11 views
20

Si è verificato un arresto anomalo durante il tentativo di utilizzare il nuovo TextInputField per Android e ha voluto condividere la mia soluzione.Android TextInputField Inflator Error

Provare il nuovo TextInputField nella libreria appcompat di Android ha provocato il blocco della mia app. Ecco il mio layout xml.

<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <EditText 
     android:id="@+id/email" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="e-mail" 
     android:inputType="textEmailAddress" 
     android:singleLine="true"/> 

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

L'errore che ho ottenuto:

android.view.InflateException: Binary XML file line #20: Error inflating class android.support.design.widget.TextInputLayout. 

SOLUZIONE: aggiungere l'attributo hintTextAppearance al TextInputLayout, in modo che il tag di piombo si presenta così:

<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:hintTextAppearance="@android:style/TextAppearance.Medium"> 
+0

La soluzione ha funzionato, grazie! – temirbek

risposta

25

Assicurati di avere il seguenti dipendenze nel file gradle:

compile 'com.android.support:appcompat-v7:22.2.0' 
compile 'com.android.support:design:22.2.0' 

esempio di lavoro:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/txtEmail_InpLyt" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" 
     android:ems="10" 
     android:id="@+id/txtEmail" 
     android:hint="Email Address" 
     android:singleLine="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true"/> 
</android.support.design.widget.TextInputLayout> 

(Impostazione hintTextAppearance non è necessario.)

Aggiornamento:

Se si verificano problemi con il testo suggerimento non appare in versioni più recenti di Android (Marshmallow/Nougat), aggiornare la libreria alla versione 22.2.1 (vedere TextInputLayout not showing EditText hint before user focus on it).

compile 'com.android.support:appcompat-v7:22.2.1' 
compile 'com.android.support:design:22.2.1' 
+0

Funziona, ma sono stato davvero sorpreso dal fatto che per far funzionare correttamente TextInputLayout devi aggiungere un'altra libreria. Sembra mal fatto. – eimmer

+0

compile 'com.android.support:appcompat-v7:25.0.1' compile 'com.android.support:design:25.0.1' } –

+0

@GilSnovsky ho aggiornato le mie librerie ma alcuni dei miei utenti di app (android api livello 23) stanno ancora ottenendo questo errore frustrante 'Causato da android.view.InflateException: riga di file XML binario # 17: riga di file XML binario # 2: errore che gonfia la classe android.support.design.widget.TextInputLayout' –

3

Ho riscontrato lo stesso problema durante il gonfiaggio di XML contenente TextInputLayout. Il problema è stato risolto impostando lo stile corretto sulla mia applicazione. Proprio come si dice qui: android design support library

Sono il seguente problema

Caused by: android.view.InflateException: Binary XML file line #38: Error inflating class android.support.design.widget.TextInputLayout 

mio style.xml era

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="android:Theme.Material"> 
     <!-- Customize your theme here. --> 
    </style> 
</resources> 

Come si legge in this post on Design Support Library

Nota che, come la libreria Design dipende dalle librerie Support Support v4 e AppCompat, che verranno incluse automaticamente quando si aggiunge la dipendenza della libreria del progetto.

quindi non è necessario aggiungere la seguente riga all'interno del file Gradle

compile 'com.android.support:appcompat-v7:22.2.0' 

ho trovato il link converrà spiegando che la libreria di supporto Design è parte del AppCompat e richiedono la base Tema AppCompat al lavoro . Così ho modificare il mio style.xml essere

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
    </style> 
</resources> 

e ha funzionato.

+0

Non è chiaro quale parte della domanda collegata sia * "impostazione dello stile corretto" *. Puoi mostrare cosa intendi con un rapido esempio, come una linea di codice/configurazione? (È consigliabile comunque riepilogare un collegamento, nel caso in cui il suo target cambi :) – kdbanman

+0

-1 Potrebbe funzionare ma a che cosa serve usare la libreria di supporto se si aggiunge parent = "android: Theme.Material" si deve cambiare il api a 21. @pierre – Killer

20

Questo è accaduto anche a me, e mi si avvicinò con una soluzione che non richiede la modifica del tema App, ma semplicemente cambiando il tema del TextInputLayout:

<android.support.design.widget.TextInputLayout 
    android:id="@+id/testingInputLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/Theme.AppCompat"> 

    <EditText 
     android:id="@+id/testingEditText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/testText" 
     android:inputType="textEmailAddress" /> 

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

Sarà necessario aggiungere l'AppCompat libreria se non l'hai già:

compile 'com.android.support:appcompat-v7:23.0.1' 
0

utilizzare il seguente:

View view = LayoutInflator.from(getActivity()).inflate(R.layout.your_layout_file,parent,false); 
0

voi potrebbe aver aggiunto compile 'com.android.support:appcompat-v7:22.2.0' ma è necessario aggiungere compile 'com.android.support:design:22.2.0'

si può provare questo dipendenze:

compile 'com.android.support:appcompat-v7:22.2.0' 
compile 'com.android.support:design:22.2.0' 

nel file Gradle.