다음 클래스를 인스턴스화 할 수 없습니다.-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렌더링에 대한 업데이트가있을 수 있습니다 .
Anton Holovin 2014 년

감사합니다. 해결책은 Android Studio 업데이트였습니다.
firespacexyz

비슷한 문제가 있었고 다음과 같이 수정했습니다. stackoverflow.com/a/33903057/1214729
Victor Augusto

답변:


96

Android Studio (또는 IntelliJ IDEA)의 경우

프로젝트에서 모든 것이 정상이고 모든 레이아웃에서 여전히 오류가 발생한다면 '캐시 무효화 및 다시 시작'을 시도하십시오.

Android Studio가 모든 캐시 및 색인 생성을 완료 할 때까지 기다립니다.

캐시 무효화 및 재시작 방법


감사합니다이 답변이 도움이되었습니다.
해시

이상이 실제로 도움이 me..its 우리는이 작업을 수행해야하지만, 덕분에 @gbero
MetaSnarf

2
이것은 일반적으로 Android Studio 업데이트 후에 나에게 발생했습니다. 아마도 일부 내부 색인이 잘못된 것으로 밝혀졌습니다 ...
gbero

1
참고 : 이렇게하면 '지역 기록'이 삭제되므로 약간 극단적입니다. Android Studio 2.2.3에는 UI 미리보기 로그 대화 상자에 '캐시 지우기'링크가 있습니다. 먼저 시도해 보았지만 두 솔루션 모두 저에게 효과가 없었습니다.
fishjd

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
다른 두 솔루션이 실패한 후이 솔루션이 저에게 효과적이었습니다.
곰과 레슬링 한 적이 있습니다.

9
무슨 이득이 솔루션에 대한 논리
블랙 호크

이것은 와우 작동했습니다! . 누군가가 설명 해주길 바라지 만 이유를 정말로 알고 싶습니다.
void

2
에 대한 어떤 NoActionBar에서 Base. 대체 무엇입니까 Theme.AppCompat.NoActionBar?
Mario Velasco 2017 년

1
그것은 나를 위해 일했지만 그것을 선언하는 코드 자체를 보면 앱에서 Base.Theme.Whatever를 참조해서는 안된다는 주석이 있습니다. 그래서 이것은 예상되는 행동이 아니라고 말하고 싶습니다.
JoeHz 2017

35

@gbero가 말한대로했고 Studio에서 사용하는 Android 버전 번호를 22에서 17로 변경했는데 작동합니다.

Android 버전 22 용으로 빌드하기 위해 이전 버전과의 호환성을 사용하고 있지만 17 (정확하게 말한 경우 idk는 여전히이 앱을 파악하려고 노력 중입니다)을 타겟팅하여 이전 버전과의 호환성을 유발했습니다 android.support.v7.*. 이는 아마도 렌더링 코드의 버그 일 것입니다. 캐시를 무효화 한 직후 렌더링이 작동하지 않았기 때문에 위에서 제안한대로 캐시를 지워야하는지 확실하지 않은 경우 렌더링 할 버전을 변경 한 후 작동하기 시작했습니다. 버전 22로 다시 변경하면 렌더링이 중단되고 17로 다시 전환하면 다시 작동합니다.

내 수정


나는 똑같은 문제에 직면하고 있고, 이미 모든 것을 다했지만, 내 문제는 아직 해결되지 않았습니다. 어떻게 해결할 수 있습니까?
Atiar 탈루 크다

1
늦게 답장을 드려 죄송합니다. API 버전 17을 타겟팅했습니다. 16을 타겟팅하는 경우 16으로 전환하면 17은 여전히 ​​잘못된 버전입니다. 이 망할 IDE를 작동시키는 데 너무 많은 어려움이 있었기 때문에 방금 명령 줄을 사용하기 시작했습니다. Visual Studio와 마찬가지로 둘 다 지나치게 설계되어 도구가 아니라 부담이됩니다.
Overloaded_Operator

API 레벨을 변경하고 일부 파일을 업데이트 한 후 내 문제가 해결되었습니다. 미리 감사드립니다
Atiar 탈루 크다

@Overloaded_Operator minSdkVersion버전이 17 인 경우 API 수준이 17 인 에뮬레이터 또는 API 수준이 17 인 실제 기기에서 앱을 실행하고 UI가 Android 스튜디오에서 렌더링 된 것과 다르게 보이는지 확인하는 것이 좋습니다
John


12

동일한 효과를 가질 수있는 또 다른 실수는 미리보기의 잘못된 테마 일 수 있습니다. 어떤 이유로 나는 여기에서 다른 주제를 선택했습니다. 내 AppTheme을 선택한 후 다시 정상적으로 작동했습니다.

레이아웃 옵션


이것은 나를 위해 일했습니다. 그러나 우리가 어떤 테마를 선택해야하는지 아는 방법. 나는 안드로이드 초보자 해요
Menuka Ishan

1
레이아웃 파일을 사용하는 활동에 대해 지정한 것과 동일한 테마를 선택해야합니다. 그것은 종종 AndroidManifest.xml을 설정하고 입술 / 값 / styles.xml 또는 입술에 정의 / 값 / themes.xml
비욘 Kechel

감사합니다 :) 내 테스트 앱에는 themes.xml이 없지만 테마는 AndroidManifest.xml에 있습니다. 그러나 나는 왜 그들이 그것을 바꿀 수있는 옵션을 제공하는지 궁금해 할 수 없습니다. XML로 편집해야한다면 텍스트처럼 바로 표시 만하고 테마 변경 옵션이 아닌 이유는 무엇입니까? 초보자는 잘못된 것
Menuka Ishan에게

1
개발자 문서를 조금 읽어보아야 할 것입니다. developer.android.com/guide/topics/ui/themes.html 테마 외에도 초보자에게 필요한 대부분의 내용을 다룹니다.
Björn Kechel

9

내 대답은 미안하지만 마침내 내 문제의 해결책은 Canary Channel : http://tools.android.com/recent/에서 Android Studio를 새 버전 0.8.14로 업데이트하는 것이 었습니다.

업데이트 후 문제가 사라졌습니다.

업데이트 후 문제가 사라졌습니다.

나는 미래에이 문제가있는 사람들을 위해이 질문을 여기에 남겨둔다.


11
아니요, Android Studio 1.2 RC 2를 사용 중이며 여전히이 오류가 발생합니다.
IgorGanapolsky 2015-04-27

@IgorGanapolsky 아래 내 대답을 참조하십시오
gbero

나는 안드로이드 스튜디오 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
Mario Velasco

2

프로젝트를 미리보고 싶을 때 Android Studio 화면에서 동일한 오류가 발생했습니다. 이 방법으로 문제를 해결합니다.

1- 버전을 22에서 21로 변경합니다.하지만 버전 22로 다시 변경하면 렌더링이 중단되고 21로 다시 전환하면 다시 작동합니다. @Overloaded_Operator 감사합니다

Android Studio를 업데이트했지만 작동하지 않습니다. 감사합니다 @ Salvuccio96


1

위의 어느 것도 나를 위해 일하지 않았고, 내 앱 gradle 파일에서 appCompat-v7 버전을 23에서 25.3.1로 업데이트했습니다. 나를 위해 일하는 데 도움이


1

app / res / values ​​폴더에서 styles.xml을 찾으십시오.

스타일의 상위 속성에 "Base"가 누락되었을 수 있습니다. 다음과 같이 시작해야합니다.

<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 스튜디오는 "편집기 열기"와 "알림 숨기기"의 두 가지 옵션이있는 오른쪽 상단에 알림을 표시합니다. - "편집기 열기"를 클릭합니다.-테마 상위 드롭 다운에서 모든 테마 표시를 클릭합니다.-AppCompat로 시작하는 테마를 선택합니다 ... (AppComat.DayNight를 사용했습니다)

참고 : 제목 표시 줄이 사라지면 Activity 대신 AppCompatActivity를 확장해야합니다.

모두 제일 좋다!


0

내 앱의 활동 중 하나에 대해 동일한 문제가 발생했습니다.이 문제의 원인 중 하나는 테마 편집기의 테마가 '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.