Kelas berikut tidak dapat dibuat instance-nya: - android.support.v7.widget.Toolbar


104

Saya membuat aplikasi dengan Desain Material baru yang digunakan di Android Lollipop (5.0).

Saya menggunakan panduan berikut:

Setelah saya membuat toolbar, saya menerima error ini: "Class berikut tidak dapat dibuat: - android.support.v7.widget.Toolbar"

Aplikasi ini berfungsi dengan baik di ponsel atau emulator, tetapi desainer tata letak Android Studio tidak menampilkan tata letak dengan benar.

Berikut ini beberapa gambarnya:

Kesalahan dalam pratinjau tata letak my_awesome_toolbar.xml kesalahan di my_awesome_toolbar.xml

Kesalahan dalam pratinjau tata letak activity_my.xml kesalahan dalam activity_my.xml

Kode xml dari file:

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

kode xml gaya (nilai / gaya.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>

Saat ini saya menggunakan Android Studio Beta 0.8.9


Coba perbarui studio android. Versi terakhir adalah 0.8.14. Mungkin ada pembaruan untuk Toolbarrendering.
Anton Holovin

Terima kasih, solusinya adalah perbarui Android Studio.
firespacexyz

Saya memiliki masalah serupa dan diperbaiki dengan mengikuti ini: stackoverflow.com/a/33903057/1214729
Victor Augusto

Jawaban:


96

Untuk Android Studio (atau IntelliJ IDEA),

Jika semuanya terlihat baik-baik saja dalam proyek Anda dan Anda masih menerima kesalahan di semua tata letak Anda, coba 'Memvalidasi cache & memulai ulang'.

Tunggu hingga Android Studio selesai membuat semua cache & indeks.

cara membatalkan cache & memulai ulang


Terima kasih Jawaban ini membantu saya.
hash

ini benar-benar membantu saya .. anehnya kita harus melakukan ini tapi terima kasih @gbero
MetaSnarf

2
ini terjadi pada saya biasanya setelah pembaruan Android Studio. Mungkin beberapa indeks internal berubah menjadi salah ...
gbero

1
Catatan: ini akan menghapus 'riwayat lokal' Anda jadi agak ekstrim. Android Studio 2.2.3 memiliki tautan 'hapus cache' di kotak dialog log pratinjau UI, coba ini dulu, tetapi tidak ada solusi yang berhasil untuk saya.
fishjd

1
Tidak berhasil untuk saya, saya memperbarui versi appCompat - v7 dari 23 menjadi 25.3.1. membantu membuatnya bekerja untuk saya
Antroid

164

Saya mengubah file res / values ​​/ styles.xml dari ini:

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

untuk ini:

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

dan itu memecahkan masalah.


3
Setelah dua solusi lainnya gagal, yang satu ini berhasil untuk saya.
Aku pernah bergulat dengan beruang.

9
Apa logika untuk solusi ini
blackHawk

Ini berhasil, wow! . Saya benar-benar ingin tahu mengapa meskipun tolong seseorang yang peduli untuk menjelaskan?
batal

2
Bagaimana dengan NoActionBardi Base. Penggantinya untuk apa Theme.AppCompat.NoActionBar?
Mario Velasco

1
Ini berhasil untuk saya, tetapi jika Anda melihat kode itu sendiri yang menyatakannya, ada komentar yang mengatakan bahwa Anda mungkin TIDAK harus merujuk ke Base.Theme. Apa pun di aplikasi Anda. Jadi saya akan mengatakan bahwa ini BUKAN perilaku yang diharapkan.
JoeHz

35

Saya melakukan apa yang dikatakan @gbero, dan saya mengubah nomor versi Android yang digunakan Studio dari 22 menjadi 17 dan berhasil.

Saya menggunakan kompatibilitas mundur untuk membangun Android ver 22 tetapi untuk menargetkan 17 (idk jika itu dikatakan dengan benar, saya masih mencoba mencari tahu hal-hal aplikasi ini) sehingga memicu kompatibilitas mundur, yang afaik adalah apa adanya android.support.v7.*. Ini mungkin bug dengan kode rendering mereka. Tidak yakin apakah membersihkan cache seperti yang disarankan di atas diperlukan karena rendering tidak berfungsi tepat setelah membuat cache tidak valid, itu mulai berfungsi setelah saya mengubah versi untuk membuat. Jika saya mengubah kembali ke versi 22, rendering rusak, jika saya beralih kembali ke 17, itu berfungsi lagi.

perbaikan saya


Saya menghadapi masalah yang sama, saya sudah melakukan segalanya, Tapi masalah saya belum terselesaikan. Bagaimana saya bisa mengatasinya?
Atiar Talukdar

1
Maaf untuk balasan terlambat, saya menargetkan API versi 17, jika Anda menargetkan, katakanlah 16, lalu beralih ke 16, 17 akan tetap versi yang salah. Saya mengalami begitu banyak masalah dalam menjalankan IDE sialan ini, saya baru saja mulai menggunakan baris perintah. Sama dengan Visual Studio, keduanya terlalu direkayasa dan menjadi beban, bukan alat.
Overloaded_Operator

Masalah saya teratasi, setelah mengubah level API & memperbarui beberapa file. Thanks In Advance
Atiar Talukdar

@Overloaded_Operator Jika minSdkVersionversinya 17, saya sarankan untuk menjalankan aplikasi pada emulator dengan API level 17 atau perangkat sebenarnya dengan API level 17 dan mengonfirmasi apakah UI terlihat seperti yang diharapkan dan bukan seperti yang dirender di Android Studio
John


12

Kesalahan lain yang dapat memiliki efek yang sama adalah tema yang salah di pratinjau. Untuk beberapa alasan saya telah memilih beberapa tema lain di sini. Setelah memilih AppTheme saya, itu berfungsi dengan baik lagi:

opsi tata letak


Ini berhasil untuk saya. Tapi Bagaimana kita tahu tema mana yang harus dipilih. Saya pemula di Android
Menuka Ishan

1
Anda harus memilih tema yang sama yang Anda tentukan untuk aktivitas yang menggunakan file layout. Ini sering disetel di AndroidManifest.xml dan ditentukan di res / values ​​/ styles.xml atau res / values ​​/ themes.xml
Björn Kechel

Terima kasih :) Tidak ada themes.xml di aplikasi pengujian saya tetapi temanya ada di AndroidManifest.xml. Tetapi saya bertanya-tanya mengapa mereka memberikan opsi untuk mengubahnya, jika itu akan memberikan kesalahan? Jika harus diedit dalam xml, mengapa hanya menampilkannya di sana saja, Suka Teks, tetapi tidak menyukai opsi untuk mengubah tema? Seorang pemula akan salah arah
Menuka Ishan

1
Anda mungkin harus membaca sedikit tentang dokumen pengembang : developer.android.com/guide/topics/ui/themes.html Selain tema, mereka mencakup sebagian besar hal yang dibutuhkan pemula.
Björn Kechel

9

Maaf jika saya menjawab sendiri, tetapi, pada akhirnya, solusi masalah saya adalah memperbarui Android Studio ke versi baru 0.8.14 oleh Canary Channel: http://tools.android.com/recent/

Setelah pembaruan, masalahnya hilang:

Setelah pembaruan, masalahnya hilang

Saya tinggalkan pertanyaan ini di sini bagi mereka yang memiliki masalah ini di masa mendatang.


11
Tidak, saya menggunakan Android Studio 1.2 RC 2, dan masih mendapatkan kesalahan ini.
IgorGanapolsky

Lihat jawaban saya di bawah ini @IgorGanapolsky
gbero

Saya di Android Studio 2.2 dan aku masih mendapatkan masalah
Ab


5

Saya melakukan apa yang dikatakan @ang_lee dan juga saya menambahkan baris ini ke gaya tema aplikasi:

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

saya menggunakan versi 26.0.1:

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

alat bangunan:

buildToolsVersion "26.0.1"

Saya harus menambahkan juga ini:<item name="windowNoTitle">true</item
Mario Velasco

2

Saya mengalami kesalahan yang sama pada layar Android Studio saya ketika saya ingin memenangkan proyek saya. Saya memperbaiki masalah dengan cara ini:

1- Saya mengubah versi dari 22 menjadi 21. Tetapi jika saya mengubah kembali ke versi 22, rendering rusak, jika saya beralih kembali ke 21, ini berfungsi lagi. Terima kasih @Overloaded_Operator

Saya memperbarui Android Studio saya tetapi tidak berfungsi. Terima kasih @ Salvuccio96


1

tidak satu pun di atas berfungsi untuk saya, saya memperbarui versi appCompat - v7 di file gradle aplikasi saya dari 23 menjadi 25.3.1. membantu membuatnya berhasil untuk saya


1

Temukan styles.xml di folder app / res / values.

Atribut induk gaya mungkin tidak memiliki "Basis". Ini harus dimulai sebagai

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

0

Saya mengalami kesalahan yang sama. Akhirnya saya mendapat pemberitahuan ini bahwa plugin sudah ketinggalan zaman:

dialog kesalahan

Setelah saya perbarui, masalahnya hilang.


0

Solusi di atas tidak membantu saya. Saya sudah mencoba 2 langkah pertama dari tautan ini . Bekerja dengan baik untuk saya. Tapi jangan lupa

import com.melnykov.fab.FloatingActionButton; 

dari pada

import android.support.design.widget.FloatingActionButton;

di MainActivity.java Anda


0

Saya menggunakan android studio 2.3.3: - Open styles.xml - Android studio akan menampilkan notifikasi di kanan atas dengan dua pilihan: "open editor" dan "Hide notification". - Klik "editor terbuka" - Di bawah tarik-turun orang tua tema, klik tampilkan semua tema - Pilih tema apa pun yang dimulai dengan AppCompat ... (Saya menggunakan AppComat.DayNight)

NB: Jika bilah judul Anda menghilang, Anda perlu memperluas AppCompatActivity sebagai ganti Activity.

Semua yang terbaik!


0

Saya memiliki masalah yang sama untuk salah satu aktivitas di aplikasi saya, salah satu penyebab masalah ini adalah Tema di editor tema mungkin berbeda dari tema yang ditentukan di 'styles.xml'. Ubah Tema di editor tema ke 'Apptheme' Anda atau tema yang ditentukan kustom Anda (jika Anda telah menentukan). Melakukan ini memperbaiki masalah saya.


0

Masalah Saya juga telah diatasi dengan mengubah styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.