web-dev-qa-db-ja.com

以下のクラスはインスタンス化できませんでした: - Android.support.v7.widget.Toolbar

Android Lollipop(5.0)で使用されている新しいMaterial Designを使用してアプリを作成しています。

私は以下のガイドを使っています。

ツールバーを作成した後、次のエラーが表示されます。

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

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

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

Activity_my.xmlレイアウトプレビューのエラー error in 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を使用しています

101
FirestormXYZ

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

プロジェクトですべて問題ないように見えても、すべてのレイアウトでエラーがまだ発生している場合は、「キャッシュを無効にして再起動」を試してください。

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

how to invalidate cache & restart

91
gbero

私はこれからres/values/styles.xmlファイルを変更しました:

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

これに:

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

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

163
Ang Lee

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

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

my fix

35

から: https://stackoverflow.com/a/29989542/41234

  1. クリーンプロジェクト
  2. プロジェクトを再構築
  3. 同期グレードル

これは私にとってトリックでした。

13
Eric B.

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

layout options

12
Björn Kechel

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

更新後、問題は解決しました。

After the update, the problem is gone

私はこの問題を将来この問題を抱えている人々のためにここに残します。

9
FirestormXYZ

私は@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"
5
AymAn AbuOmar
  1. クリーンプロジェクト
  2. プロジェクトを再構築
  3. 同期グレードル

それは私のために働く

5

私は自分のプロジェクトをprevewしたいとき私は私のAndroid Studioの画面上で同じエラーがありました。私はこの方法で問題を解決します。

1 - 私は22から21にバージョンを変更します。しかし、私がバージョン22に戻すと、レンダリングが中断され、21に戻すとそれは再び機能します。ありがとうございます@Overloaded_Operator

私は自分のAndroid Studioをアップデートしたが動かなかった。ありがとうございます@ Salvuccio96

2
kilian agboton

上記のどれも私のために働きませんでした、私は23から25.3.1へ私のアプリgradleファイルのappCompat - v7バージョンを更新しました。それが私のために働くのを助けました

1
antroid

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

スタイルの親属性に "Base"がない可能性があります。それは始まるべきです

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

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

import com.melnykov.fab.FloatingActionButton; 

の代わりに

import Android.support.design.widget.FloatingActionButton;

mainActivity.Javaに

0
WishMaster

私の問題はstyles.xmlの変更によっても解決されました

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
0
abir99

私は同じエラーがありました。結局、私はプラグインが時代遅れであるというこの通知を受けました:

error dialog

更新後、問題は解決しました。

0
James Moore

私は自分のアプリのアクティビティの一つで同じ問題を抱えていました、この問題の原因の一つはテーマエディタのテーマが 'styles.xml'で定義されたテーマと異なるかもしれないということです。テーマエディタのテーマの変更あなたの「Apptheme」またはあなたのカスタム定義されたテーマ(あなたが定義したならば)に。これをやって私の問題を修正しました。

0
V. Tank

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

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

ではごきげんよう!

0
Norman Pilusa