Không thể khởi tạo các lớp sau: - android.support.v7.widget.Toolbar


104

Tôi đang tạo một ứng dụng với Material Design mới được sử dụng trong Android Lollipop (5.0).

Tôi đang sử dụng các hướng dẫn sau:

Sau khi tạo thanh công cụ của mình, tôi nhận được lỗi này: "Không thể khởi tạo các lớp sau: - android.support.v7.widget.Toolbar"

Ứng dụng hoạt động tốt trong điện thoại hoặc trình giả lập, nhưng trình thiết kế bố cục của Android Studio không hiển thị bố cục chính xác.

Dưới đây là một số hình ảnh:

Lỗi trong bản xem trước bố cục my_awesome_toolbar.xml lỗi trong my_awesome_toolbar.xml

Lỗi trong bản xem trước bố cục activity_my.xml lỗi trong activity_my.xml

Mã xml của các tệp:

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

mã xml của các kiểu (giá trị / 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>

Hiện tại tôi đang sử dụng Android Studio Beta 0.8.9


Cố gắng cập nhật studio android. Phiên bản cuối cùng là 0.8.14. Nó có thể có các bản cập nhật để Toolbarkết xuất.
Anton Holovin

Cảm ơn, giải pháp là cập nhật Android Studio.
firespacexyz

Tôi đã gặp sự cố tương tự và đã khắc phục bằng cách làm theo cách này: stackoverflow.com/a/33903057/1214729
Victor Augusto,

Câu trả lời:


96

Đối với Android Studio (hoặc IntelliJ IDEA),

Nếu mọi thứ có vẻ ổn trong dự án của bạn và bạn vẫn gặp lỗi trong tất cả các bố cục của mình, hãy thử 'Vô hiệu hóa bộ nhớ đệm & khởi động lại'.

Chờ cho đến khi Android Studio hoàn tất để tạo tất cả bộ nhớ đệm và chỉ mục.

làm thế nào để vô hiệu hóa bộ nhớ cache và khởi động lại


Cảm ơn. Câu trả lời này đã giúp tôi.
băm

này me..its thực sự giúp lạ chúng ta sẽ phải làm điều này nhưng nhờ @gbero
MetaSnarf

2
điều này thường xảy ra với tôi sau khi cập nhật Android Studio. Có lẽ một số chỉ số lần lượt nội bộ là sai ...
gbero

1
Lưu ý: thao tác này sẽ xóa 'lịch sử địa phương' của bạn nên hơi cực đoan. Android Studio 2.2.3 có liên kết 'xóa bộ nhớ cache' trong hộp thoại nhật ký xem trước giao diện người dùng, hãy thử cách này trước, nhưng không giải pháp nào phù hợp với tôi.
fishjd

1
Không hiệu quả với tôi, tôi đã cập nhật phiên bản appCompat - v7 từ 23 lên 25.3.1. giúp để làm cho nó làm việc cho tôi
Antroid

164

Tôi đã thay đổi tệp res / values ​​/ styles.xml từ tệp này:

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

đến điều này:

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

và điều đó đã giải quyết được vấn đề.


3
Sau khi hai giải pháp khác không thành công, giải pháp này đã hiệu quả với tôi.
Tôi đã đấu vật với một con gấu một lần.

9
Logic cho giải pháp này là gì
blackHawk

Điều này làm việc wow! . Tôi thực sự muốn biết tại sao mặc dù xin ai đó quan tâm giải thích?
void

2
Còn NoActionBartrong Base. Thay thế cho Theme.AppCompat.NoActionBarcái gì?
Mario Velasco

1
Nó hoạt động với tôi, nhưng nếu bạn nhìn vào chính mã khai báo nó, sẽ có những nhận xét nói rằng có lẽ bạn KHÔNG nên tham khảo Base.Theme.W anything trong ứng dụng của bạn. Vì vậy, tôi muốn nói rằng đây KHÔNG phải là hành vi được mong đợi.
JoeHz

35

Tôi đã làm theo những gì @gbero đã nói và tôi đã thay đổi số phiên bản Android mà Studio sử dụng từ 22 thành 17 và nó hoạt động.

Tôi đang sử dụng khả năng tương thích ngược để xây dựng cho Android phiên bản 22 nhưng để nhắm mục tiêu 17 (idk nếu điều đó được nói chính xác, tôi vẫn đang cố gắng tìm ra thứ ứng dụng này) để kích hoạt khả năng tương thích ngược, afaik là gì android.support.v7.*. Đây có thể là một lỗi với mã kết xuất của họ. Không chắc liệu có cần xóa bộ nhớ cache như đã đề xuất ở trên hay không vì kết xuất không hoạt động ngay sau khi làm mất hiệu lực bộ nhớ cache, nó bắt đầu hoạt động sau khi tôi thay đổi phiên bản để kết xuất. Nếu tôi thay đổi về phiên bản 22, kết xuất sẽ bị hỏng, nếu tôi chuyển về 17, nó hoạt động trở lại.

sửa chữa của tôi


Tôi đang đối mặt với vấn đề tương tự, tôi đã làm mọi thứ, nhưng vấn đề của tôi vẫn chưa được giải quyết. Làm thế nào tôi có thể giải quyết nó?
Atiar Talukdar

1
Xin lỗi vì trả lời muộn, tôi đang nhắm mục tiêu API phiên bản 17, nếu bạn đang nhắm mục tiêu, chẳng hạn như 16, sau đó chuyển sang 16, 17 sẽ vẫn là phiên bản sai. Tôi đã gặp rất nhiều khó khăn để IDE chết tiệt này hoạt động, tôi chỉ mới bắt đầu sử dụng dòng lệnh. Tương tự với Visual Studio, cả hai đều được thiết kế quá mức và chúng trở thành gánh nặng chứ không phải công cụ.
Overloaded_Operator

Vấn đề của tôi đã được giải quyết, sau khi thay đổi cấp API và cập nhật một số tệp. Thanks In Advance
Atiar Talukdar

@Overloaded_Operator Nếu minSdkVersionphiên bản của bạn là 17, tôi khuyên bạn nên chạy ứng dụng trên trình giả lập có API cấp 17 hoặc thiết bị thực tế có API cấp 17 và xác nhận xem giao diện người dùng có như mong đợi và không như những gì được hiển thị trong Android Studio hay không
John


12

Một sai lầm khác có thể gây ra hiệu ứng tương tự có thể là sai chủ đề trong bản xem trước. Vì một số lý do tôi đã chọn một số chủ đề khác ở đây. Sau khi chọn AppTheme của tôi, nó hoạt động tốt trở lại:

Tuỳ chọn Giao diện


Điều này đã làm việc cho tôi. Nhưng Làm thế nào chúng tôi biết chủ đề nào được chọn. Tôi mới bắt đầu với Android
Menuka Ishan

1
Bạn nên chọn cùng một chủ đề mà bạn đã chỉ định cho hoạt động sử dụng tệp bố cục. Nó thường được thiết lập trong AndroidManifest.xml và quy định tại res / values / styles.xml hoặc res / values / themes.xml
Björn Kechel

Cảm ơn bạn :) Không có themes.xml trong ứng dụng thử nghiệm của tôi nhưng chủ đề có trong AndroidManifest.xml. Nhưng tôi không thể không tự hỏi tại sao họ cho tùy chọn thay đổi nó, nếu nó sẽ báo lỗi? Nếu nó nên được chỉnh sửa trong xml, tại sao chỉ hiển thị nó ở đó, Giống như Văn bản, nhưng không giống như một tùy chọn để thay đổi chủ đề? Một người mới bắt đầu sẽ nhầm lẫn
Menuka Ishan

1
Bạn có thể nên đọc qua tài liệu dành cho nhà phát triển một chút: developer.android.com/guide/topics/ui/themes.html Ngoài các chủ đề, chúng bao gồm hầu hết những thứ mà người mới bắt đầu cần.
Björn Kechel

9

Xin lỗi nếu tôi tự trả lời, nhưng cuối cùng, giải pháp cho vấn đề của tôi là cập nhật Android Studio lên phiên bản mới 0.8.14 bởi Canary Channel: http://tools.android.com/recent/

Sau khi cập nhật, sự cố đã biến mất:

Sau khi cập nhật, sự cố đã biến mất

Tôi để câu hỏi này ở đây cho những ai có vấn đề này trong tương lai.


11
Không, tôi đang sử dụng Android Studio 1.2 RC 2 và vẫn gặp lỗi này.
IgorGanapolsky

Xem câu trả lời của tôi bên dưới @IgorGanapolsky
gbero

Tôi đang trên Android Studio 2.2 và tôi vẫn nhận được vấn đề
Ab

5
  1. Dự án sạch
  2. Xây dựng lại dự án
  3. Đồng bộ hóa Gradle

nó làm việc cho tôi


5

Tôi đã làm những gì @ang_lee nói và tôi cũng đã thêm dòng này vào phong cách chủ đề ứng dụng:

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

tôi đang sử dụng phiên bản 26.0.1:

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

công cụ xây dựng:

buildToolsVersion "26.0.1"

Tôi cũng phải thêm điều này:<item name="windowNoTitle">true</item
Mario Velasco

2

Tôi đã gặp lỗi tương tự trên màn hình Android Studio khi tôi muốn viết trước dự án của mình. Tôi khắc phục sự cố bằng cách này:

1- Tôi thay đổi phiên bản từ 22 thành 21. Nhưng nếu tôi thay đổi trở lại phiên bản 22, kết xuất bị hỏng, nếu tôi chuyển về 21, nó hoạt động trở lại. Xin cảm ơn @Overloaded_Operator

Tôi đã cập nhật Android Studio của mình nhưng không hoạt động. Cảm ơn bạn @ Salvuccio96


1

không có cách nào ở trên phù hợp với tôi, tôi đã cập nhật phiên bản appCompat - v7 trong tệp gradle ứng dụng của mình từ 23 lên 25.3.1. đã giúp làm cho nó hoạt động cho tôi


1

Tìm styles.xml trong thư mục app / res / values.

Thuộc tính gốc của kiểu có thể bị thiếu "Cơ sở". Nó sẽ bắt đầu như

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

0

Tôi đã có những lỗi giống nhau. Cuối cùng, tôi nhận được thông báo này rằng một plugin đã lỗi thời:

hộp thoại lỗi

Sau khi tôi cập nhật, sự cố đã biến mất.


0

Các giải pháp trên đã không giúp tôi. Tôi đã thử 2 bước đầu tiên từ liên kết này . Làm việc tốt cho tôi. Nhưng đừng quên

import com.melnykov.fab.FloatingActionButton; 

thay vì

import android.support.design.widget.FloatingActionButton;

trong MainActivity.java của bạn


0

Tôi sử dụng android studio 2.3.3: - Mở styles.xml - Android studio sẽ hiển thị thông báo ở trên cùng bên phải với hai tùy chọn: "mở trình chỉnh sửa" và "Ẩn thông báo". - Nhấp vào "mở trình chỉnh sửa" - Trong trình đơn thả xuống của chủ đề, nhấp vào hiển thị tất cả các chủ đề - Chọn bất kỳ chủ đề nào bắt đầu bằng AppCompat ... (Tôi đã sử dụng AppComat.DayNight)

NB: Nếu thanh tiêu đề của bạn biến mất, bạn cần mở rộng AppCompatActivity thay vì Activity.

Tất cả tốt nhất!


0

Tôi đã gặp vấn đề tương tự đối với một trong những hoạt động trong ứng dụng của mình, một trong những nguyên nhân của sự cố này là Chủ đề trong trình chỉnh sửa chủ đề có thể khác với chủ đề được xác định trong 'styles.xml'. Thay đổi Chủ đề trong trình chỉnh sửa chủ đề vào 'Apptheme' hoặc chủ đề được xác định tùy chỉnh của bạn (nếu bạn đã xác định). Làm điều này đã khắc phục sự cố của tôi.


0

Vấn đề của tôi cũng đã được giải quyết bằng cách thay đổi trong styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.