次のクラスをインスタンス化できませんでした:-android.support.v7.widget.Toolbar


104

Android Lollipop(5.0)で使用されている新しいマテリアルデザインでアプリを作成しています。

次のガイドを使用しています。

ツールバーを作成した後、「次のクラスをインスタンス化できませんでした:-android.support.v7.widget.Toolbar」というエラーが表示されます。

アプリは電話またはエミュレーターでうまく機能しますが、Android Studioのレイアウトデザイナーはレイアウトを正しく表示しません。

ここにいくつかの画像があります:

my_awesome_toolbar.xmlレイアウトプレビューのエラー my_awesome_toolbar.xmlのエラー

activity_my.xmlレイアウトプレビューのエラー activity_my.xmlのエラー

ファイルのxmlコード:

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

スタイルのxmlコード(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>

現時点では、Android Studio Beta 0.8.9を使用しています


Android Studioを更新してみてください。最後のバージョンは0.8.14です。Toolbarレンダリングの更新が含まれている可能性があります。
アントンホロビン2014年

ありがとう、解決策はAndroid Studioの更新でした。
firespacexyz 2014年

同様の問題があり、次のようにして修正しました:stackoverflow.com/a/33903057/1214729
Victor Augusto

回答:


96

Android Studio(またはIntelliJ IDEA)の場合

プロジェクトですべてが正常に見え、すべてのレイアウトで引き続きエラーが発生する場合は、「キャッシュを無効にして再起動」してみてください。

Android Studioがすべてのキャッシュとインデックスの作成を完了するまで待ちます。

キャッシュを無効にして再起動する方法


ありがとうございます。この回答は役に立ちました。
ハッシュ

これは実際に私を助けました..変なことをする必要がありますが、@ gberoに感謝します
MetaSnarf

2
これは通常、Android Studioのアップデート後に発生しました。おそらくいくつかの内部インデックスが間違っているようになります...
gbero 2015年

1
注:これにより「ローカル履歴」が削除されるため、少し極端になります。Android Studio 2.2.3のUIプレビューログダイアログボックスに「キャッシュのクリア」リンクがあります。最初にこれを試してみてください。
fishjd 2017

1
私にとってはうまくいきませんでした。appCompat-v7バージョンを23から25.3.1に更新しました。私のためにそれを機能させるのを助けました
Antroid

164

res / values / styles.xmlファイルを次のように変更しました:

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

これに:

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

それで問題は解決しました。


3
他の2つのソリューションが失敗した後、これは私のために働いた。
クマを1回レスリングしました。

9
このソリューションのロジックは
何ですか

これはすごい働きました!。私は本当に誰かが説明を気にしてもどうして知りたいのですか?

2
NoActionBarの中でBase。の代わりはTheme.AppCompat.NoActionBar何ですか?
マリオベラスコ2017

1
それは私にとってはうまくいきましたが、それを宣言するコード自体を見ると、おそらくアプリ内でBase.Theme.Whateverを参照すべきではないというコメントがあります。したがって、これは予想される動作ではありません。
JoeHz 2017年

35

@gberoが言ったことを行い、Studioが使用するAndroidのバージョン番号を22から17に変更しました。

私は後方互換性を使用してAndroid ver 22をビルドしていますが、17をターゲットにしています(それが正しく言われている場合、idkはまだこのアプリを理解しようとしています)。これにより、後方互換性がトリガーされましたandroid.support.v7.*。これはおそらく、レンダリングコードのバグです。キャッシュを無効化した直後にレンダリングが機能しなかったため、上記で提案されているようにキャッシュをクリアする必要があるかどうかはわかりませんが、バージョンをレンダリングに変更した後、キャッシュが機能し始めました。バージョン22に戻すとレンダリングが中断し、17に戻すと再び機能します。

私の修正


私は同じ問題に直面しています、私はすでにすべてを行いましたが、私の問題はまだ解決されていません。どうすれば解決できますか?
Atiar Talukdar

1
返信が遅くなって申し訳ありません。APIバージョン17をターゲットにしていました。たとえば、16をターゲットにしている場合、16に切り替えてください。17はまだ間違ったバージョンです。このいまいましいIDEを機能させるのに非常に苦労しました。コマンドラインを使い始めました。Visual Studioの場合と同様に、どちらの方法も高度に設計されており、ツールではなく負担になります。
Overloaded_Operator 2015年

APIレベルを変更して一部のファイルを更新した後、私の問題は解決しました。事前の感謝
Atiar Talukdar

@Overloaded_Operator minSdkVersionバージョンが17の場合、APIレベル17のエミュレーターまたはAPIレベル17の実際のデバイスでアプリを実行し、UIがAndroid Studioでレンダリングされたものではなく、期待どおりに見えるかどうかを確認することをお勧めします
John


12

同じ効果を持つ別の間違いは、プレビューのテーマが間違っている可能性があります。なぜかここで他のテーマを選択しました。私のAppThemeを選択した後、それは再びうまくいきました:

レイアウトオプション


これでうまくいきました。しかし、どのテーマを選択するかを知る方法。私は、Androidへの初心者だ
Menukaイシャン

1
レイアウトファイルを使用するアクティビティに指定したのと同じテーマを選択する必要があります。それはしばしばのAndroidManifest.xmlに設定され、RES /値/のstyles.xml又はRESに定義さ/値/ themes.xml
ビョルンKechel

ありがとう:)私のテストアプリにはthemes.xmlはありませんが、テーマはAndroidManifest.xmlにありました。しかし、エラーが発生するのであれば、なぜ彼らがそれを変更するオプションを提供するのか、疑問に思わずにはいられません。それをxmlで編集する必要がある場合、なぜそれを正しく表示するだけで、テキストのように、テーマを変更するオプションのようにしないのですか?初心者は見当違いです
Menuka Ishan

1
おそらく、開発者向けドキュメントthroughtビットをお読みください:developer.android.com/guide/topics/ui/themes.html脇のテーマから、彼らはほとんどのもの初心者のニーズをカバーしています。
ビョルンKechel

9

私が自分で答えた場合は申し訳ありませんが、最後に、私の問題の解決策は、Canary ChannelによってAndroid Studioを新しいバージョン0.8.14に更新することでした:http ://tools.android.com/recent/

アップデート後、問題はなくなりました。

アップデート後、問題はなくなりました

この問題は、今後この問題が発生する人のために残しておきます。


11
いいえ、Android Studio 1.2 RC 2を使用していますが、まだこのエラーが発生します。
IgorGanapolsky 2015

以下の私の回答を参照してください@IgorGanapolsky
gbero

私は、Android Studioの2.2にと私はまだ問題を取得しています
Abの


5

@ang_leeの言ったことを行い、次の行をアプリのテーマスタイルに追加しました。

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

私はバージョン26.0.1を使用しています:

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

構築ツール:

buildToolsVersion "26.0.1"

私もこれを追加する必要がありました:<item name="windowNoTitle">true</item
マリオベラスコ2017

2

Android Studioの画面で、プロジェクトをプレビューしたいときに同じエラーが発生しました。私はこの方法で問題を修正します:

1-バージョンを22から21に変更します。ただし、バージョン22に戻すとレンダリングが中断し、21に戻すと再び機能します。ありがとう@Overloaded_Operator

Android Studioを更新しましたが、機能しません。ありがとう@ Salvuccio96


1

上記のどれもうまくいかなかったので、アプリグラドルファイルのappCompat-v7バージョンを23から25.3.1に更新しました。それが私のために働くのを助けました


1

app / res / valuesフォルダーでstyles.xmlを見つけます。

スタイルの親属性に「ベース」がない可能性があります。それは次のように始まるはずです

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

0

同じエラーが発生しました。最終的に、プラグインが古くなっているというこの通知を受け取りました。

エラーダイアログ

アップデート後、問題は解消しました。


0

上記の解決策は私を助けませんでした。私はこのリンクから2つの最初のステップを試しました 。私にとってはうまくいきました。しかし、忘れないでください

import com.melnykov.fab.FloatingActionButton; 

の代わりに

import android.support.design.widget.FloatingActionButton;

MainActivity.java


0

私はandroid studio 2.3.3を使用しています。-styles.xmlを開く-Android studioは右上に通知を表示し、「エディタを開く」と「通知を隠す」という2つのオプションがあります。-[エディターを開く]をクリックします-テーマの親のドロップダウンで[すべてのテーマを表示]をクリックします-AppCompatで始まるテーマを選択します...(AppComat.DayNightを使用しました)

注意:タイトルバーが消えた場合は、ActivityではなくAppCompatActivityを拡張する必要があります。

ではごきげんよう!


0

アプリのアクティビティの1つで同じ問題が発生しました。この問題の原因の1つは、テーマエディターのテーマが「styles.xml」で定義されたテーマと異なる可能性があることです。テーマエディターでテーマを変更してください「Apptheme」またはカスタム定義のテーマ(定義している場合)に追加します。これを行うと私の問題が解決しました。


0

私の問題は、styles.xmlを変更することによっても解決されました

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.