android.view.InflateException: Linha de arquivo XML binário # 12: Erro ao inflar a classe <unknown>


147

Estou recebendo muitos erros do tipo exibidos no assunto. Esses erros parecem ocasionais e não posso reproduzi-los. Da pilha, posso aprender que esse erro pode ocorrer para meus diferentes recursos de layout. A linha de XML também está variando.

Alguém pode explicar por que esse erro ocorre? E o que posso fazer para corrigir esse problema?

Pilha

=============================================================

com.fsp.android.f generated the following exception:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fsp.android.f/com.life360.android.ui.tour.TourActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

--------- Stack trace ---------
1. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2649)
2. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
3. android.app.ActivityThread.access$2200(ActivityThread.java:131)
4. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
5. android.os.Handler.dispatchMessage(Handler.java:99)
6. android.os.Looper.loop(Looper.java:123)
7. android.app.ActivityThread.main(ActivityThread.java:4702)
8. java.lang.reflect.Method.invokeNative(Native Method)
9. java.lang.reflect.Method.invoke(Method.java:521)
10. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12. dalvik.system.NativeStart.main(Native Method)
-------------------------------

----------- Cause -----------
android.view.InflateException: Binary XML file line #12: Error inflating class <unknown>

1. android.view.LayoutInflater.createView(LayoutInflater.java:513)
2. com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
3. android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
4. android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
5. android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
6. android.view.LayoutInflater.inflate(LayoutInflater.java:382)
7. android.view.LayoutInflater.inflate(LayoutInflater.java:320)
8. android.view.LayoutInflater.inflate(LayoutInflater.java:276)
9. com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:208)
10. android.app.Activity.setContentView(Activity.java:1629)
11. com.solvek.sample.ui.BaseActivity.onCreate(BaseActivity.java:23)
12. com.solvek.sample.ui.tour.TourActivity.onCreate(TourActivity.java:161)
13. android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
14. android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2587)
15. android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2674)
16. android.app.ActivityThread.access$2200(ActivityThread.java:131)
17. android.app.ActivityThread$H.handleMessage(ActivityThread.java:1975)
18. android.os.Handler.dispatchMessage(Handler.java:99)
19. android.os.Looper.loop(Looper.java:123)
20. android.app.ActivityThread.main(ActivityThread.java:4702)
21. java.lang.reflect.Method.invokeNative(Native Method)
22. java.lang.reflect.Method.invoke(Method.java:521)
23. com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
24. com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
25. dalvik.system.NativeStart.main(Native Method)
-----------------------------

-------- Environment --------
Time =2010-12-20 08:27:35 AM
Device =tmobile/htc_espresso/espresso/espresso:2.1-update1/ERE27/216830:user/release-keys
Make =HTC
Model =T-Mobile myTouch 3G Slide
Product =htc_espresso
App =com.fsp.android.f, version 2.0.9 (build 1232)

Aqui está um resultado do XML, no entanto, esse erro ocorre em outros xmls

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <ViewFlipper android:layout_gravity="fill" android:id="@+id/flipper" android:layout_height="fill_parent" android:layout_width="fill_parent">
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_1"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_2"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_3"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_4"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_5"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_6"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_7"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_8"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_9"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_10"/>
        <ImageView android:scaleType="fitXY" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/tour_11"/>
    </ViewFlipper>

    <LinearLayout android:id="@+id/exit_bar" android:layout_gravity="top" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <Button android:background="@drawable/orange_btn" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:textColor="#000000" android:shadowColor="#ffffff" android:shadowRadius="1.6" android:shadowDx="1.5" android:shadowDy="1.3" android:id="@+id/exit_tour_btn" android:text="Exit" android:layout_marginLeft="20dip"/>
        <TextView android:layout_height="wrap_content" android:textColor="#ffffff" android:layout_gravity="center" android:layout_width="110dip" android:layout_marginLeft="20dip" android:textSize="16dip" android:textStyle="bold" android:text="Life360 Tour"/>

    </LinearLayout>

    <Button style="@style/BlueBtn" android:text="Continue" android:layout_marginTop="40dip" android:id="@+id/continue_btn" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_gravity="center" />

    <FrameLayout android:id="@+id/bottom_bar" android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/blue_bar" android:visibility="invisible">
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/left" android:layout_gravity="left|center" android:background="@drawable/tour_left" android:layout_marginLeft="10dip"/>
        <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/right" android:layout_gravity="right|center" android:background="@drawable/tour_right" android:layout_marginRight="10dip"/>               
    </FrameLayout>
</merge>

Respostas:


266

A exceção inflar não é realmente o problema, mas realmente vem de outro problema mais profundo no layout, que é agrupado em uma InflateException. Um problema comum é uma exceção de falta de memória ao tentar aumentar uma visualização de imagem carregando um recurso extraível. Se um desses recursos tiver uma alta resolução de pixels, seria necessária muita memória, causando uma exceção inflada.

Então, basicamente, verifique se a resolução de pixel nas imagens de drawables é apenas o mínimo necessário para o seu layout.


4
@vnportnoy Também tenho o mesmo erro quando removo a imagem #
Harin Kaklotar

4
Eu acredito que eu não tenho nenhum drawables no meu aplicativo
Arturas M

3
Tente verificar o pacote de idiomas, provavelmente está faltando um recurso de string. Isso estava causando um problema no meu caso.
Mohammed Subhi Sheikh Quroush

Se o seu problema é com testes de instrumentação, em seguida, tente o seguinte: stackoverflow.com/q/24904445
Jerry Destremps

Depois de remover a visualização de imagem do meu xml, o erro ocorre no caminho de classe 'com.android.tools.build:gradle:3.0.0-alpha2' e compile 'com.android.support.constraint: constrangir-layout: 1.0.2'
Subho 30/05

24

ViewFlippercarrega todas as imagens na memória durante o inflamento do layout. Porque minhas imagens são grandes que leva muitos a memória, eu substituído ViewFlippercom ImageSwitcherque pode mudar as imagens com animação como ViewFlipper, mas ele carrega apenas uma imagem no momento.


23

Isso também pode acontecer se você usar uma VectorDrawablebiblioteca de suporte ao uso e se esquecer de usar em app:srcCompatvez deandroid:src

O erro exato é: Linha de arquivo XML binário #XX: Erro ao inflar a classe ImageView

Veja esse link


Depois de ativar isso, você sempre deve usar o app: srcCompat
Mohamed ALOUANE 4/16/16

Mas isso não irá gerar falhas aleatórias.
Menna-Allah Sami

11

Eu tive o mesmo erro ao criar uma exibição personalizada com apenas um construtor, tente definir todo construtor para suas visualizações personalizadas.

   public CustomWebView(Context context) {
        super(context);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

11

Sei que a pergunta já foi respondida, mas ainda estou postando com a ideia de que alguém possa ter esse tipo de problema.

No meu caso, o problema é que estou carregando meu aplicativo para o telefone, que faz referência a layouts de res / layout / folder e valores para @dimens de res / values ​​/ dimens. Aqui está a font_22 que ele está tentando acessar e define em res / values-xlarge / dimens.

Na verdade, estou atualizando a interface do usuário do projeto existente.

Corri para esse problema porque estou usando o IDE Eclipse, onde clico + espaço para obter dicas ao escrever xml para a pasta de layout. Ele exibe todos os valores dos valores e a pasta values-xlarge, independentemente da pasta em que estou escrevendo.

Sei também que os valores nos dois arquivos devem ser iguais aos mapeados para telas diferentes.

Espero que isso ajude alguém a enfrentar esse tipo de problema bobo.


9

Encontrei o mesmo bug e encontrei o motivo principal:

Use o Contexto do Aplicativo para aumentar a exibição.

Inflar com o Contexto da Atividade corrigiu o erro.


6

O tamanho da minha imagem é de apenas 14 KB, mas o problema é que o designer me forneceu 1011px x 1819px (a resolução é muito alta, causando a InflateException)


6

Caso alguém tenha problemas semelhantes, eu tive um problema ao inflar a exibição:

View.inflate(getApplicationContext(), R.layout.my_layout, null)

corrigido substituindo getApplicationContext()porthis


5

Eu tive esse erro porque selecionei o tema como tema Material. Mas como eu estava tentando executar o aplicativo no 4.4.2, deu esse erro.

Solução: Selecione Theme_holo como tema


Meu problema pode ser semelhante ao seu, pois só estou vendo a falha 4.2.2. Mas onde eu mudo do tema Material para Theme_holo? Não vejo a palavra-chave Material no meu styles.xmlou v21/styles.xml. Veja minha pergunta: stackoverflow.com/questions/37883677/…
Katedral Pillon:

4

Este link pode ajudá-lo. Tente verificar se há problemas no manifesto. Se você conseguir que isso aconteça novamente, publique todo o rastreamento da pilha para que possamos ver qual é realmente o erro.

EDIT: Tenho certeza que você verificou isso, mas o que está na linha 12 do arquivo XML que você usa para o layout do TourActivity?


Eu li esse problema. Este não é o meu caso (pelo menos não posso vê-lo). Adicionando pilha à pergunta.
Solvek

Resposta atualizada, você pode postar o XML? Se você não se importa, publique a totalidade do XML, se não for muito grande.
precisa

Adicionado XML à pergunta inicial
Solvek

Hmm, infelizmente não tenho experiência em usar mesclagem ou ViewFlipper ... Todos os arquivos XML que isso acontece com a mesclagem ou o ViewFlipper?
precisa

Não. Outros arquivos não possuem mesclagem de flipper, mas ainda têm o mesmo problema.
Solvek

4

Para mim, a mensagem de erro era realmente insuficiente no gato de log, então aqui está o que eu fiz para descobrir o que causou o problema:

(Na mensagem de erro do gato de log, dizia que o erro ocorreu ao inflar um layout específico no meu HomeFragment.java)

  1. Coloquei um ponto de interrupção antes do inflamento do layout
  2. Executei o aplicativo no modo de depuração até atingir esse ponto de interrupção específico
  3. Selecionei a linha com o cursor e corri Evaluate expression :
    • Run > Evaluate Expression ou alt - F8
  4. O resultado me mostrou mais informações sobre a origem do problema, que, no meu caso, era um arquivo extraível usando tools:targetApi="lollipop"(o bug ocorreu apenas em dispositivos mais antigos).

Obrigado! Isso me ajudou a encontrar o problema!
Sergey Stasishin

4

Encontrei o mesmo erro e levamos dois dias para identificar qual era o erro.

O erro foi simplesmente porque eu estava tentando usar: android:background

Ao invés de: app:srcCompat

em um arquivo SVG.

No seu caso, acredito que é isso

<ImageView 
    android:scaleType="fitXY" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/tour_11"      <-- the error is here !
 />

Eu recomendo usá-lo desta maneira

adicione isso ao seu aplicativo build.gradle

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

e

<androidx.appcompat.widget.AppCompatImageView  <-- use **AppCompatImageView** not **ImageView**
        android:scaleType="fitXY" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        app:srcCompat="@drawable/tour_11"
     />

Eu espero que isso ajude.


3

Sei que é uma pergunta respondida, mas não vejo a causa que enfrentei.

Foi que o Android Studio colocou meus drawables em / drawable-V24 Meu emulador é a API 23. Então, eventualmente, ele não consegue encontrá-lo.

A solução foi mover todos os drawables para a pasta / drawable (no -24).


Eu também tive o mesmo caso.
Rafael

3

Você deve copiar os arquivos de imagem da pasta "drawable-24" para a pasta "drawable".


2

Eu tive o mesmo erro e resolvi mover meus drawables da pasta drawable-mdpi para a pasta drawable. Levei algum tempo para perceber, porque no Eclipse tudo funcionava perfeitamente, enquanto no Android Studio eu recebia esses erros de execução feios.

Nota de edição: se você estiver migrando do eclipse para o Android Studio e seu projeto for proveniente do eclipse, isso pode acontecer, portanto, tenha cuidado para que no Android Studio as coisas sejam um pouco diferentes do eclipse.


2

No meu caso, esse erro ocorre quando eu uso o botão de ação flutuante e o defino android:backgroundTint="#000". Então simplesmente não defina backgroundTinte problema resolvido. Espero que seja útil para você.


Obrigado, esse foi realmente o problema no meu caso. Precisa usar em app:backgroundTintvez de android:backgroundTint.
Drago

2

Para mim, meu problema era que eu estava

android:background="?attr/selectableItemBackground"

Para um plano de fundo LinearLayout, depois que o removi, o teste passou.


1

Eu tive esse problema agora e consegui descobrir o que era. Estava referenciando uma cor nos meus valores que estava causando problemas. Então, defini-lo manualmente, em vez de usar um das sugestões suspensas.


1

Eu tive o mesmo erro ao executar meu aplicativo na API lvl 16 (26 foi bom). Foi porque eu usei ?attrr/colorAccentna minha forma drawable:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="8dp" />

    <solid android:color="@attr/colorAccent" />

</shape>

Substituir isso por uma cor regular corrigiu meu problema.


1

Eu tive o mesmo problema e resolvi removendo o drawable-v24 com (24) na frente das imagens na pasta drawable e substituindo-as por drawables comuns.


1

Eu sei que esse tópico é antigo, mas ainda o respondo para que ninguém mais passe noites sem dormir.

Eu estava refatorando um projeto antigo, cujos arquivos de layout todos continham atributos codificados como android:maxLength = 500. Então decidi registrá-lo no meu res/dimenarquivo como <dimen name="max_length">500</dimen>.

Terminei de refatorar quase 30 arquivos de layout com meu valor de res. Adivinha? da próxima vez que executei meu projeto, ele começou a jogar o mesmoInflateException .

Como solução, era necessário refazer todas as minhas alterações e manter todos esses valores iguais aos de antes.

TLDR;

passo 1: Tudo funcionando bem.

Etapa 2: Para aumentar minha manutenção, substituí android:maxLength = 500por <dimen name="max_length">500</dimen>e android:maxLength = @dimen/max_length, foi aí que tudo deu errado (travando comInflateException ).

Etapa 3: tudo funcionando mal

Etapa 4: refazer todo o meu trabalho substituindo novamente android:maxLength = @dimen/max_lengthporandroid:maxLength = 500 refazer .Tudo foi corrigido.

Etapa 5: tudo funcionando bem.


1

Resolvi movendo todos os meus itens desenháveis ​​de drawable-v24 para drawable


0

Eu também enfrentei um problema semelhante. Embora para alguém isso possa ser um problema de vários usos ruins no Código, como

  1. Etiqueta de layout incorreta em XML
  2. O carregamento de recursos pesados ​​diretamente no ImageView resultando em OOM
  3. Problemas com o uso de estilos.

Um fator mais ignorado pode ser o uso do Contexto correto ao aumentar visualizações. Verifique se você não está usando o ApplicationContext onde um contexto de atividade é necessário. Enquanto, ApplicationContext possa não acabar sempre em erro, mas dependendo da sua hierarquia de visualizações, pode ser crucial.

Resolvi meu problema com um contexto MAU (usando ApplicationContext em vez de Activity em um período de 4 dias! Portanto, tente se isso resolver. Feliz codificação!


0

Eu havia enfrentado o mesmo problema, havia usado a tag view em xml, em vez de View. A substituição da classe View foi corrigida.

Espero que ajude você também ..


0

Precisamos verificar a versão da API. Eu costumava dar cor de fundo ao meu LinearLayoutgosto

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/as_royalblue"
        android:orientation="vertical"></LinearLayout>

com certeza tive o mesmo erro, as_royalblue.xmldentro da drawablepasta

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="90"
        android:endColor="@color/royalblue_s"
        android:startColor="@color/royalblue_e" />
</shape>

e como eu o consertei , na verdade parece um problema de API, por isso precisamos verificar o nível da API se estiver acima da API 24 para que possamos usar da maneira que gostamos. Mas se for menor de 24 anos, precisamos evitar o uso, os juts dão uma cor normal ou uma cor e não uma gradiente de cor mista.

fun checkAPI_N(): Boolean {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
            return true
        else
            return false
    }

identifique seus layouts lineares e defina os fundos, se estiver ok

 if(UtilKotlin.checkAPI_N()){
            linlay_act_menu_container.setBackgroundResource(R.drawable.a_6)
            linlay_act_menu_logo.setBackgroundResource(R.drawable.as_strain)
        }else {//todo normal color background setting}

0

No meu caso, devo especificar o nome completo do pacote do componente de interface do usuário da biblioteca que eu uso no meu arquivo de layout.


0

Para mim, aconteceu porque tentei misturar imagens de gráficos vetoriais xml com png comuns no mesmo arquivo de layout,

somente depois de substituir os gráficos vetoriais xml por pngs, ele começou a funcionar


0
  • Resolvi esse problema, exclua suas imagens do drawable (v24) e cole-o na pasta drawable que funciona para mim.


0

Eu tive o mesmo erro em Crashlytics um dispositivo estranho: Motorola One Vision Android 5.1 e 20 GB (grátis) de RAM, com root Este dispositivo vem originalmente com Android 9.0, 4 GB de RAM

Provavelmente alguém está tentando invadir o aplicativo que estou desenvolvendo no momento e tem problemas ao lidar com vários APKs. Portanto, não é possível encontrar drawables e o aplicativo fornece a falha

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.