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

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

gbero
fonte
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.

Ang Lee
fonte
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

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

Björn Kechel
fonte
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.

firespacexyz
fonte
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
  1. Projeto limpo
  2. Reconstruir projeto
  3. Sync Gradle

funciona para mim

Taioli Francesco
fonte
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"
AymAn AbuOmar
fonte
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

agboton kilian
fonte
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

Antróide
fonte
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...
dp2050
fonte
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.

James Moore
fonte
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

WishMaster
fonte
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!

Norman Pilusa
fonte
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.

WizWarrior
fonte
0

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

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
abir99
fonte