No se pudieron crear instancias de las siguientes clases: - android.support.v7.widget.Toolbar


104

Estoy creando una aplicación con el nuevo Material Design utilizado en Android Lollipop (5.0).

Estoy usando las siguientes guías:

Después de crear mi barra de herramientas, recibo este error: "No se pudo crear una instancia de las siguientes clases: - android.support.v7.widget.Toolbar"

La aplicación funciona bien en el teléfono o en el emulador, pero el diseñador de diseño de Android Studio no muestra el diseño correctamente.

Aquí hay algunas imágenes:

Error en la vista previa del diseño my_awesome_toolbar.xml error en my_awesome_toolbar.xml

Error en la vista previa del diseño activity_my.xml error en activity_my.xml

El código xml de los archivos:

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 de los estilos (valores / estilos.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>

En este momento uso Android Studio Beta 0.8.9


Intenta actualizar Android Studio. La última versión es 0.8.14. Puede que tenga actualizaciones para Toolbarrenderizar.
Anton Holovin

Gracias, la solución fue actualizar Android Studio.
firespacexyz

Tuve un problema similar y lo solucioné siguiendo esto: stackoverflow.com/a/33903057/1214729
Victor Augusto

Respuestas:


96

Para Android Studio (o IntelliJ IDEA),

Si todo se ve bien en su proyecto y sigue recibiendo el error en todos sus diseños, intente 'Invalidar cachés y reiniciar'.

Espere hasta que Android Studio haya terminado para crear todas las cachés e índices.

cómo invalidar la caché y reiniciar


Gracias Esta respuesta me ayudó.
hash

esto realmente me ayudó ... es raro que tengamos que hacer esto, pero gracias @gbero
MetaSnarf

2
esto me sucedió generalmente después de una actualización de Android Studio. Probablemente algunos índices internos resulten incorrectos ...
gbero

1
Nota: esto eliminará su 'historial local' por lo que es un poco extremo. Android Studio 2.2.3 tiene un enlace 'borrar caché' en el cuadro de diálogo del registro de vista previa de la interfaz de usuario, intente esto primero, pero ninguna de las soluciones funcionó para mí.
fishjd

1
No funcionó para mí, actualicé appCompat - versión v7 de 23 a 25.3.1. ayudó a que funcionara para mí
Antroid

164

Cambié el archivo res / values ​​/ styles.xml de esto:

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

a esto:

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

y eso resolvió el problema.


3
Después de que las otras dos soluciones fallaron, esta funcionó para mí.
Luché con un oso una vez.

9
¿Cuál es la lógica de esta solución
BlackHawk

Esto funcionó ¡guau! . Realmente quiero saber por qué, aunque por favor, alguien se preocupe por explicarlo.
anulado el

2
¿Qué pasa con NoActionBaren Base. ¿Para qué es el reemplazo Theme.AppCompat.NoActionBar?
Mario Velasco

1
Me funcionó, pero si miras el código en sí que lo declara, hay comentarios que dicen que probablemente NO deberías referirte a Base.Theme.Whatever en tu aplicación. Entonces diría que este NO es el comportamiento esperado.
JoeHz

35

Hice lo que dijo @gbero, y cambié el número de versión de Android que usa Studio de 22 a 17 y funciona.

Estoy usando la compatibilidad con versiones anteriores para compilar para Android ver 22, pero para apuntar a 17 (idk, si se dice correctamente, todavía estoy tratando de resolver esta aplicación), por lo que desencadenó la compatibilidad con versiones anteriores, que afaik es lo que android.support.v7.*es. Probablemente sea un error con su código de renderizado. No estoy seguro de si era necesario borrar el caché como se sugirió anteriormente, ya que el renderizado no funcionó justo después de invalidar el caché, comenzó a funcionar después de que cambié la versión para renderizar. Si vuelvo a cambiar a la versión 22, el renderizado se interrumpe, si vuelvo a cambiar a la 17, vuelve a funcionar.

mi solución


Estoy enfrentando el mismo problema, ya hice todo, pero mi problema aún no está resuelto. ¿Cómo puedo resolverlo?
Atiar Talukdar

1
Perdón por la respuesta tardía, estaba apuntando a la versión 17 de API, si está apuntando, digamos 16, luego cambie a 16, 17 seguiría siendo la versión incorrecta. Tuve tantos problemas para hacer que este maldito IDE funcionara, recién comencé a usar la línea de comandos. Lo mismo ocurre con Visual Studio, ambos están demasiado diseñados y se convierten en una carga, no en una herramienta.
Overloaded_Operator

Mi problema está resuelto, después de cambiar el nivel de API y actualizar algunos archivos. Gracias de
antemano

@Overloaded_Operator Si su minSdkVersionversión es 17, sugeriría ejecutar la aplicación en un emulador con nivel de API 17 o un dispositivo real con nivel de API 17 y confirmar si la interfaz de usuario se ve como se esperaba y no como lo que se representa en Android Studio
John


12

Otro error que puede tener el mismo efecto puede ser el tema incorrecto en la vista previa. Por alguna razón, había seleccionado otro tema aquí. Después de elegir mi AppTheme, funcionó bien nuevamente:

opciones de diseño


Esto funcionó para mí. Pero cómo sabemos qué tema seleccionar. Soy un principiante en Android
Menuka Ishan

1
Debe elegir el mismo tema que especificó para la actividad que usa el archivo de diseño. A menudo se establece en AndroidManifest.xml y se define en res / values ​​/ styles.xml o res / values ​​/ themes.xml
Björn Kechel

Gracias :) No hay themes.xml en mi aplicación de prueba, pero el tema estaba en AndroidManifest.xml. Pero no puedo dejar de preguntarme por qué diablos dan la opción de cambiarlo, si va a dar un error. Si debe editarse en xml, ¿por qué solo mostrarlo allí, como texto, pero no como una opción para cambiar un tema? Un principiante estaría equivocado
Menuka Ishan

1
Probablemente debería leer un poco los documentos del desarrollador: developer.android.com/guide/topics/ui/themes.html Aparte de los temas, cubren la mayoría de las cosas que necesita un principiante.
Björn Kechel

9

Perdón si me respondo, pero, finalmente, la solución a mi problema fue actualizar Android Studio a la nueva versión 0.8.14 por Canary Channel: http://tools.android.com/recent/

Después de la actualización, el problema desapareció:

Después de la actualización, el problema desapareció.

Dejo esta pregunta aquí para quienes tengan este problema en el futuro.


11
No, estoy en Android Studio 1.2 RC 2 y sigo recibiendo este error.
IgorGanapolsky

Vea mi respuesta a continuación @IgorGanapolsky
gbero

Estoy en Android Studio 2.2 y sigo teniendo el problema
Ab


5

Hice lo que dijo @ang_lee y también agregué esta línea al estilo del tema de la aplicación:

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

estoy usando la versión 26.0.1:

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

herramientas de construcción:

buildToolsVersion "26.0.1"

Tuve que agregar también esto:<item name="windowNoTitle">true</item
Mario Velasco

2

Tuve el mismo error en la pantalla de mi Android Studio cuando quise evitar mi proyecto. Soluciono el problema de esta manera:

1- Cambié la versión de 22 a 21. Pero si vuelvo a la versión 22, el renderizado se rompe, si vuelvo a cambiar a 21, vuelve a funcionar. Gracias @Overloaded_Operator

Actualicé mi Android Studio pero no funciona. Gracias @ Salvuccio96


1

nada de lo anterior funcionó para mí, actualicé la versión appCompat - v7 en el archivo gradle de mi aplicación de 23 a 25.3.1. ayudó a que funcionara para mí


1

Busque styles.xml en la carpeta app / res / values.

Es posible que falte "Base" en el atributo principal del estilo. Debería comenzar como

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

0

Yo tenía el mismo error. Finalmente recibí este aviso de que un complemento estaba desactualizado:

diálogo de error

Después de la actualización, el problema desapareció.


0

Las soluciones anteriores no me ayudaron. Probé 2 primeros pasos desde este enlace . Funcionó bien para mí. Pero no te olvides de

import com.melnykov.fab.FloatingActionButton; 

en vez de

import android.support.design.widget.FloatingActionButton;

en su MainActivity.java


0

Yo uso Android Studio 2.3.3: - Abrir styles.xml - Android Studio mostrará una notificación en la parte superior derecha con dos opciones: "abrir editor" y "Ocultar notificación". - Haga clic en "abrir editor" - En el menú desplegable principal del tema, haga clic en mostrar todos los temas - Seleccione cualquier tema que comience con AppCompat ... (Usé AppComat.DayNight)

NB: Si su barra de título desaparece, necesita extender AppCompatActivity en lugar de Activity.

¡Todo lo mejor!


0

Tuve el mismo problema para una de las actividades en mi aplicación, una de las causas de este problema es que el tema en el editor de temas puede ser diferente al tema definido en 'styles.xml'. Cambiar el tema en el editor de temas a su 'Apptheme' o su tema personalizado definido (si lo ha definido). Hacer esto solucionó mi problema.


0

Mi problema también se ha resuelto cambiando en styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.