Aşağıdaki sınıflar başlatılamadı: - android.support.v7.widget.Toolbar


104

Android Lollipop'ta (5.0) kullanılan yeni Materyal Tasarımı ile bir uygulama oluşturuyorum.

Aşağıdaki kılavuzları kullanıyorum:

Araç çubuğumu oluşturduktan sonra şu hatayı alıyorum: "Aşağıdaki sınıflar başlatılamadı: - android.support.v7.widget.Toolbar"

Uygulama telefonda veya emülatörde iyi çalışıyor, ancak Android Studio'nun düzen tasarımcısı düzeni doğru göstermiyor.

İşte bazı resimler:

My_awesome_toolbar.xml düzen önizlemesinde hata my_awesome_toolbar.xml dosyasındaki hata

Activity_my.xml düzen önizlemesinde hata activity_my.xml dosyasında hata

Dosyaların xml kodu:

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);
    }
}

stillerin xml kodu (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>

Şu anda Android Studio Beta 0.8.9 kullanıyorum


Android stüdyosunu güncellemeyi deneyin. Son sürüm 0.8.14'tür. ToolbarOluşturma için güncellemeleri olabilir .
Anton Holovin

Teşekkürler, çözüm Android Studio güncellemesiydi.
firespacexyz

Benzer bir sorunla karşılaştım ve bunu takip ederek düzelttim: stackoverflow.com/a/33903057/1214729
Victor Augusto

Yanıtlar:


96

Android Studio (veya IntelliJ IDEA) için,

Projenizde her şey yolunda görünüyorsa ve tüm düzenlerinizde hala hatayı alıyorsanız, 'Önbellekleri geçersiz kıl ve yeniden başlat' seçeneğini deneyin.

Tüm önbellekleri ve dizinleri oluşturmak için Android Studio'nun bitmesini bekleyin.

önbellek nasıl geçersiz kılınır ve yeniden başlatılır


Teşekkürler, bu cevap bana yardımcı oldu.
karma

bu aslında bana yardımcı oldu ... bunu yapmak zorunda kalacağımız garip ama teşekkürler @gbero
MetaSnarf

2
bu genellikle Android Studio güncellemesinden sonra başıma geldi. Muhtemelen bazı dahili dizinler yanlış olabilir ...
gbero

1
Not: Bu, 'yerel geçmişinizi' siler, bu yüzden biraz aşırı olur. Android Studio 2.2.3, kullanıcı arayüzü önizleme günlüğü iletişim kutusunda 'önbelleği temizle' bağlantısına sahiptir, önce bunu deneyin, ancak iki çözüm de benim için işe yaramadı.
fishjd

1
Benim için işe yaramadı, appCompat - v7 sürümünü 23'ten 25.3.1'e güncelledim. benim için çalışmasına yardımcı oldu
Antroid

164

Res / values ​​/ styles.xml dosyasını bundan değiştirdim:

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

buna:

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

ve bu sorunu çözdü.


3
Diğer iki çözüm başarısız olduktan sonra, bu benim için çalıştı.
Bir ayıyla güreştim.

9
Bu çözümün mantığı nedir
blackHawk

Bu harika çalıştı! . Gerçekten neden birileri açıklamayı önemsemesine rağmen bilmek istiyorum.
geçersiz

2
Peki ya NoActionBariçeri Base. Değiştirme ne için Theme.AppCompat.NoActionBar?
Mario Velasco

1
Benim için çalıştı, ancak onu açıklayan kodun kendisine bakarsanız, muhtemelen Base.Theme.What in your app 'a başvurmamalısınız diyen yorumlar var. Bu yüzden bunun beklenen davranış olmadığını söyleyebilirim.
JoeHz

35

@Gbero'nun dediğini yaptım ve Studio'nun kullandığı Android sürüm numarasını 22'den 17'ye değiştirdim ve çalışıyor.

Android ver 22'yi oluşturmak için geriye dönük uyumluluğu kullanıyorum, ancak 17'yi hedeflemek için (doğru söylüyorsa idk, hala bu uygulama malzemelerini anlamaya çalışıyorum), böylece geriye dönük uyumluluğu tetikledi, bu da afaik android.support.v7.*. Bu muhtemelen işleme kodlarıyla ilgili bir hatadır. Önbelleği yukarıda önerildiği gibi temizlemenin gerekli olup olmadığından emin değilim, çünkü oluşturma önbelleği geçersiz kıldıktan hemen sonra çalışmadı, sürümü işlemek için değiştirdikten sonra çalışmaya başladı. Sürüm 22'ye geri dönersem, oluşturma bozulur, 17'ye geri dönersem tekrar çalışır.

düzeltmem


Aynı problemle karşı karşıyayım, zaten her şeyi yaptım, Ama problemim henüz çözülmedi. Bunu nasıl çözebilirim?
Atiar Talukdar

1
Geç yanıt için özür dilerim, API sürüm 17'yi hedefliyordum, diyelim ki 16'yı hedefliyorsanız, 16'ya geçmek yine de yanlış sürüm olur. Bu lanet olası IDE'yi çalıştırmak için o kadar çok sorun yaşadım ki, komut satırını kullanmaya başladım. Visual Studio'da olduğu gibi, her ikisi de aşırı mühendisliklidir ve bir araç değil, bir yük haline gelirler.
Overloaded_Operator

API seviyesini değiştirdikten ve bazı dosyaları güncelledikten sonra sorunum çözüldü.
Şimdiden

@Overloaded_Operator Sürümünüz minSdkVersion17 ise, uygulamayı API seviyesi 17 olan bir emülatörde veya API seviyesi 17 olan gerçek bir cihazda çalıştırmanızı öneririm ve kullanıcı arayüzünün beklendiği gibi görünüp görünmediğini ve Android Studio'da oluşturulduğu gibi görünmediğini onaylarım
John


12

Aynı etkiye sahip olabilecek başka bir hata, önizlemedeki yanlış tema olabilir. Nedense burada başka bir tema seçmiştim. AppTheme'mi seçtikten sonra tekrar iyi çalıştı:

düzen seçenekleri


Bu benim için çalıştı. Ama hangi temanın seçileceğini nasıl biliyoruz. Android'e
acemiyim

1
Düzen dosyasını kullanan etkinlik için belirttiğiniz temanın aynısını seçmelisiniz. Genellikle AndroidManifest.xml'de ayarlanır ve res / values ​​/ styles.xml veya res / values ​​/ themes.xml'de tanımlanır
Björn Kechel

Teşekkürler :) Test uygulamamda temalar.xml yok, ancak tema AndroidManifest.xml içindeydi. Ama eğer hata verecekse neden onu değiştirme seçeneği verdiklerini merak etmekten kendimi alamıyorum? Eğer xml'de düzenlenmesi gerekiyorsa, neden sadece orada, Metin Gibi, ama bir temayı değiştirme seçeneği gibi değil mi? Yeni başlayan biri yanlış yönlendirirdi
Menuka Ishan

1
Muhtemelen geliştirici belgelerini biraz okumalısınız: developer.android.com/guide/topics/ui/themes.html Temaların yanı sıra, yeni başlayanların ihtiyaç duyduğu çoğu şeyi kapsar.
Björn Kechel

9

Kendim yanıtladıysam özür dilerim, ama sonunda sorunumun çözümü, Android Studio'yu Canary Channel tarafından yeni sürüm 0.8.14'e güncellemekti: http://tools.android.com/recent/

Güncellemeden sonra sorun ortadan kalktı:

Güncellemeden sonra sorun ortadan kalktı

İleride bu sorunu yaşayanlar için bu soruyu buraya bırakıyorum.


11
Hayır, Android Studio 1.2 RC 2 kullanıyorum ve hala bu hatayı alıyorum.
IgorGanapolsky

Aşağıdaki cevabımı görün @IgorGanapolsky
gbero

Ben Android Studio 2.2 üzerinde ve ben hala sorunu alıyorum
Ab


5

@Ang_lee'nin dediğini yaptım ve ayrıca bu satırı uygulama tema stiline ekledim:

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

26.0.1 sürümünü kullanıyorum:

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

yapı araçları:

buildToolsVersion "26.0.1"

Bunu da eklemek zorunda kaldım:<item name="windowNoTitle">true</item
Mario Velasco

2

Projeme devam etmek istediğimde Android Studio ekranımda aynı hatayı aldım. Sorunu şu yollarla düzeltirim:

1- Versiyonu 22'den 21'e değiştiriyorum. Fakat versiyon 22'ye dönersem render kesiliyor, 21'e dönersem tekrar çalışıyor. Teşekkürler @Overloaded_Operator

Android Studio'umu güncelledim ama çalışmıyor. Teşekkürler @ Salvuccio96


1

Yukarıdakilerin hiçbiri benim için çalışmadı, uygulama gradle dosyamdaki appCompat - v7 sürümünü 23'ten 25.3.1'e güncelledim. benim için çalışmasını sağladı


1

App / res / values ​​klasöründe styles.xml dosyasını bulun.

Stilin üst niteliğinde "Temel" eksik olabilir. Şu şekilde başlamalı

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

0

Ben de aynı hatayı aldım. Sonunda bir eklentinin güncel olmadığına dair şu bildirimi aldım:

hata iletişim kutusu

Güncelledikten sonra sorun ortadan kalktı.


0

Yukarıdaki çözümler bana yardımcı olmadı. Ben 2 ilk adımlarını denedim bu bağlantı . Benim için iyi çalıştı. Ama unutma

import com.melnykov.fab.FloatingActionButton; 

onun yerine

import android.support.design.widget.FloatingActionButton;

MainActivity.java'nızda


0

Android studio 2.3.3 kullanıyorum: - Açık styles.xml - Android stüdyo sağ üstte iki seçenekle bir bildirim gösterecektir: "düzenleyiciyi aç" ve "Bildirimi gizle". - "Düzenleyiciyi aç" ı tıklayın - Ana tema açılır menüsünde, tüm temaları göster'i tıklayın - AppCompat ile başlayan herhangi bir temayı seçin ... (AppComat.DayNight kullandım)

Not: Başlık çubuğunuz kaybolursa, Activity yerine AppCompatActivity'yi genişletmeniz gerekir.

Herşey gönlünce olsun!


0

Uygulamamdaki etkinliklerden biri için de aynı sorunu yaşadım, bu sorunun nedenlerinden biri, tema düzenleyicideki Tema'nın 'styles.xml'de tanımlanan temadan farklı olabileceğidir. Tema düzenleyicide Temayı değiştirin 'Uygulama temanıza' veya özel tanımlı temanıza (tanımladıysanız). Bunu yapmak sorunumu çözdü.


0

Benim Sorunum da styles.xml'de değiştirilerek çözüldü.

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.