As seguintes classes não puderam ser instanciadas: - android.support.v7.widget.Toolbar


104

Estou criando um aplicativo com o novo Material Design usado no Android Lollipop (5.0).

Estou usando os seguintes guias:

Depois de criar minha barra de ferramentas, recebo este erro: "As seguintes classes não puderam ser instanciadas: - android.support.v7.widget.Toolbar"

O aplicativo funciona bem no telefone ou emulador, mas o designer de layout do Android Studio não mostra o layout corretamente.

Aqui estão algumas imagens:

Erro na visualização do layout my_awesome_toolbar.xml erro em my_awesome_toolbar.xml

Erro na visualização do layout activity_my.xml erro em activity_my.xml

O código xml dos arquivos:

my_awesome_toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />

activity_my.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/root"
            tools:context="com.myapp.test.MyActivity"
            android:orientation="horizontal">

    <include
        android:id="@+id/toolbar"
        layout="@layout/my_awesome_toolbar"
        />
    <!-- Rest of layout -->
</RelativeLayout>

MyActivity.java:

package com.myapp.test;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;


public class MyActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

código xml dos estilos (values ​​/ styles.xml):

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/dark_blue</item>
        <item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>
    </style>

    <!-- Style Title -->
    <style name="Title">
        <item name="android:textColor">@color/white</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">16sp</item>
    </style>

    <style name="AppTheme.OverflowButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
        <item name="android:src">@drawable/overflow_icon</item>
    </style>
</resources>

No momento, uso o Android Studio Beta 0.8.9


Tente atualizar o Android Studio. A última versão é 0.8.14. Pode ter atualizações para Toolbarrenderização.
Anton Holovin

Obrigado, a solução foi atualizar o Android Studio.
firespacexyz

Tive um problema semelhante e resolvi o seguinte: stackoverflow.com/a/33903057/1214729
Victor Augusto

Respostas:


96

Para Android Studio (ou IntelliJ IDEA),

Se tudo parece OK em seu projeto e você ainda está recebendo o erro em todos os seus layouts, tente 'Invalidar caches e reiniciar'.

Espere até que o Android Studio termine de criar todos os caches e índices.

como invalidar o cache e reiniciar


Obrigado. Essa resposta me ajudou.
hash

isso realmente me ajudou .. é estranho ter que fazer isso, mas obrigado @gbero
MetaSnarf

2
isso acontecia comigo geralmente após uma atualização do Android Studio. Provavelmente alguns índices internos estão errados ...
gbero

1
Nota: isso irá deletar seu 'histórico local', então é um pouco extremo. O Android Studio 2.2.3 tem um link 'limpar cache' na caixa de diálogo de registro de visualização da IU, tente isso primeiro, mas nenhuma das soluções funcionou para mim.
fishjd

1
Não funcionou para mim, eu atualizei o appCompat - versão v7 de 23 para 25.3.1. ajudou a fazer funcionar para mim
Antroid

164

Alterei o arquivo res / values ​​/ styles.xml deste:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

para isso:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">

e isso resolveu o problema.


3
Depois que as outras duas soluções falharam, esta funcionou para mim.
Lutei com um urso uma vez.

9
Qual é a lógica para esta solução
blackHawk

Isso funcionou uau! . Eu realmente quero saber por que, por favor, alguém se importe em explicar?
nulo em

2
Que tal NoActionBarem Base. Para que serve a substituição Theme.AppCompat.NoActionBar?
Mario Velasco

1
Funcionou para mim, mas se você olhar o próprio código que o declara, há comentários que dizem que você provavelmente NÃO deve se referir a Base.Theme.Whatever em seu aplicativo. Portanto, eu diria que esse NÃO é o comportamento esperado.
JoeHz

35

Fiz o que @gbero disse e mudei o número da versão do Android que o Studio usa de 22 para 17 e funciona.

Estou usando a compatibilidade com versões anteriores para compilar para Android versão 22, mas para atingir 17 (idk se isso for dito corretamente, ainda estou tentando descobrir essas coisas do aplicativo), de modo que acionou a compatibilidade com versões anteriores, que afaik é o que android.support.v7.*é. Este é provavelmente um bug com seu código de renderização. Não tenho certeza se limpar o cache conforme sugerido acima era necessário, pois a renderização não funcionou logo após invalidar o cache, ela começou a funcionar depois que eu alterei a versão para renderizar. Se eu mudar de volta para a versão 22, a renderização é interrompida, se eu voltar para a versão 17, funciona novamente.

minha correção


Estou com o mesmo problema, já fiz tudo, mas o meu problema ainda não está resolvido. Como posso resolver isso?
Atiar Talukdar

1
Desculpe pela resposta tardia, eu estava almejando a versão 17 da API, se você está almejando, digamos, 16, então mudar para 16, 17 ainda seria a versão errada. Tive tantos problemas para fazer esse maldito IDE funcionar que comecei a usar a linha de comando. O mesmo acontece com o Visual Studio, ambos são muito desenvolvidos e se tornam um fardo, não uma ferramenta.
Overloaded_Operator

Meu problema está resolvido, depois de alterar o nível da API e atualizar alguns arquivos. Obrigado antecipadamente
Atiar Talukdar

@Overloaded_Operator Se sua minSdkVersionversão for 17, eu sugeriria executar o aplicativo em um emulador com API de nível 17 ou um dispositivo real com API de nível 17 e confirmar se a IU parece conforme o esperado e não como o que é renderizado no Android Studio
John


12

Outro erro que pode ter o mesmo efeito pode ser o tema errado na visualização. Por alguma razão, selecionei algum outro tema aqui. Depois de escolher meu AppTheme, ele funcionou bem novamente:

opções de layout


Isso funcionou para mim. Mas como sabemos qual tema selecionar. Sou iniciante no Android
Menuka Ishan

1
Você deve escolher o mesmo tema que especificou para a atividade que usa o arquivo de layout. Geralmente, é definido no AndroidManifest.xml e definido em res / values ​​/ styles.xml ou res / values ​​/ themes.xml
Björn Kechel

Obrigado :) Não há themes.xml em meu aplicativo de teste, mas o tema estava em AndroidManifest.xml. Mas não posso deixar de me perguntar por que diabos eles dão opção de mudar, se vai dar erro? Se deve ser editado em xml, por que só mostrar lá certo, Like Text, mas não gosta de opção de mudar um tema? Um iniciante se
enganaria

1
Você provavelmente deve ler a documentação do desenvolvedor um pouco: developer.android.com/guide/topics/ui/themes.html Além dos temas, eles cobrem a maioria das coisas que um iniciante precisa.
Björn Kechel

9

Desculpe se eu me respondi, mas, finalmente, a solução do meu problema foi atualizar o Android Studio para a nova versão 0.8.14 do Canary Channel: http://tools.android.com/recent/

Após a atualização, o problema desapareceu:

Após a atualização, o problema desapareceu

Deixo esta pergunta aqui para quem terá esse problema no futuro.


11
Não, estou usando o Android Studio 1.2 RC 2 e ainda estou recebendo este erro.
IgorGanapolsky

Veja minha resposta abaixo @IgorGanapolsky
gbero

Estou no Android Studio 2.2 e ainda estou recebendo o problema
Ab


5

Fiz o que @ang_lee disse e também adicionei esta linha ao estilo do tema do aplicativo:

<item name="windowActionBar">false</item>

estou usando a versão 26.0.1:

com.android.support:design:26.0.1
com.android.support:appcompat-v7:26.0.1

ferramentas de construção:

buildToolsVersion "26.0.1"

Tive que acrescentar também:<item name="windowNoTitle">true</item
Mario Velasco

2

Eu tive o mesmo erro na tela do meu Android Studio quando queria pré-atualizar meu projeto. Eu resolvo o problema desta forma:

1- Eu mudo a versão de 22 para 21. Mas se eu mudar de volta para a versão 22, a renderização quebra, se eu voltar para a 21, funciona de novo. Obrigado @Overloaded_Operator

Atualizei meu Android Studio, mas não está funcionando. Obrigado @ Salvuccio96


1

nenhuma das opções acima funcionou para mim, eu atualizei a versão appCompat - v7 no meu arquivo gradle do aplicativo de 23 para 25.3.1. ajudou a fazer funcionar para mim


1

Encontre styles.xml na pasta app / res / values.

Pode estar faltando "Base" no atributo pai do estilo. Deve começar como

<style name="AppTheme" parent="Base.Theme.AppCompat...

0

Eu tive o mesmo erro. Eventualmente, recebi este aviso de que um plugin estava desatualizado:

diálogo de erro

Depois que eu atualizei, o problema foi embora.


0

As soluções acima não me ajudaram. Tentei 2 primeiros passos a partir deste link . Funcionou bem para mim. Mas não se esqueça de

import com.melnykov.fab.FloatingActionButton; 

ao invés de

import android.support.design.widget.FloatingActionButton;

em seu MainActivity.java


0

Eu uso o Android Studio 2.3.3: - Abrir styles.xml - O Android Studio mostrará uma notificação no canto superior direito com duas opções: "abrir editor" e "Ocultar notificação". - Clique em "abrir editor" - No menu suspenso do tema principal, clique em mostrar todos os temas - Selecione qualquer tema começando com AppCompat ... (eu usei AppComat.DayNight)

NB: Se sua barra de título desaparecer, você precisa estender AppCompatActivity em vez de Activity.

Muito bem sucedida!


0

Tive o mesmo problema para uma das atividades em meu aplicativo, uma das causas desse problema é que o tema no editor de temas pode ser diferente do tema definido em 'styles.xml'.mudar o tema no editor de temas ao seu 'Apptheme' ou ao seu tema personalizado definido (se você tiver definido). Fazer isso corrigiu meu problema.


0

Meu problema também foi resolvido alterando em styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
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.