[java] 다음 클래스를 인스턴스화 할 수 없습니다.-android.support.v7.widget.Toolbar

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 (또는 IntelliJ IDEA)의 경우

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

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

캐시 무효화 및 재시작 방법


답변

res / values ​​/ styles.xml 파일을 다음과 같이 변경했습니다.

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

이에:

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

그리고 그것은 문제를 해결했습니다.


답변

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

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

내 수정


답변

출처 : https://stackoverflow.com/a/29989542/4123403

  1. 깨끗한 프로젝트
  2. 프로젝트 재 구축
  3. Gradle 동기화

이것은 나를 위해 트릭을했습니다.


답변

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

레이아웃 옵션


답변

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

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

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

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


답변

  1. 깨끗한 프로젝트
  2. 프로젝트 재 구축
  3. Gradle 동기화

그것은 나를 위해 일한다