2016-07-02 4 views
23

Я получаю Error:(26) No resource identifier found for attribute 'srcCompat' in package 'learnapp.android.example.com.learnapp' , когда я пытаюсь запустить свое приложение. Я только начал изучать андроид сегодня. Я добавил новая активность и dint меняют что-либо в любых xml-файлах.Идентификатор ресурса не найден для атрибута 'srcCompat' в пакете 'learnapp.android.example.com.learnapp'

Это точная ошибка:

Documents/MyProjects/LearnApp/app/src/main/res/layout/activity_display_message.xml 
Error:(26) No resource identifier found for attribute 'srcCompat' in package 'learnapp.android.example.com.learnapp' 

Вот мой activity_display_message.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="learnapp.android.example.com.learnapp.DisplayMessageActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_display_message" /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:srcCompat="@android:drawable/ic_dialog_email" /> 

</LinearLayout> 

Я уже читал подобные вопросы и увидели, что либо линия

xmlns:app="http://schemas.android.com/apk/res-auto" 

или

app:srcCompat="@android:drawable/ic_dialog_email" /> 

был не прав в своем случае, которого нет в моем случае.

Incase это имеет родительскую активность данного действия является MainActivity.java

+0

Вы можете попытаться установить вытяжку в вас коде 'fab.setImageResource (R.drawable. ic_dialog_email); ' – Harry

ответ

2

Добавить это vectorDrawables.useSupportLibrary = true в ваше приложение уровня build.gradle

defaultConfig { 
    ... 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    vectorDrawables.useSupportLibrary = true 
} 
+3

Нет, это работает. Это все равно дает мне ту же ошибку! – user3425344

32

Я просто изменил

xmlns:app="http://schemas.android.com/apk/res-auto" 

в

xmlns:app="http://schemas.android.com/apk/lib/my_package_name" 

Я видел ответ here

+0

Спасибо Thats working – user3766614

+4

Не делайте этого. Он изменяет поведение макета. Если вы попробуете с помощью ScrollingActivity, это превратит беспорядок. – Zinc

10

Также случается, когда у вас устаревшие версии библиотек поддержки.

Я обновил с:

compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:design:23.1.1' 
compile 'com.android.support:support-v4:23.1.1' 
compile 'com.android.support:recyclerview-v7:23.1.1' 

к:

compile 'com.android.support:appcompat-v7:24.2.1' 
compile 'com.android.support:design:24.2.1' 
compile 'com.android.support:support-v4:24.2.1' 
compile 'com.android.support:recyclerview-v7:24.2.1' 

(это были новые версии в данный момент я написал это)

и исчезает ошибка.

+0

Это в конечном итоге исправило это для меня. Благодаря! – Tander

12

изменение app:srcCompat="@android:drawable/ic_dialog_email" для

android:src="@android:drawable/ic_dialog_email" 
+1

, но реальный вопрос: ПОЧЕМУ Android-студия использует приложение «srcCompat» ??? Мне надоело менять это. – eric

+6

Поскольку приложение: srcCompat было добавлено в библиотеку AppCompat 23.2, поэтому, если у вас есть 23.1, его просто не существует. Вы можете использовать android: src, но app: srcCompat поддерживает векторные изображения, поэтому лучше – Zinc

8

Вы также можете попробовать

android:src = "@drawable/ic_dialog_email" 

вместо

app:srcCompat="@android:drawable/ic_dialog_email" 

Я имел ту же ошибку, и это работает для меня.

+0

Неплохо, так как мы не можем использовать векторные чертежи в pre-lollipop с 'android: src' – rpattabi

-1

Я использую srcCompat api следующим образом.

<android.support.v7.widget.AppCompatImageView 
     android:id="@+id/dashboard" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     srcCompat="@drawable/dash"> 

More info

0

Похоже, что вы только что создали новый проект. Так что я исправил это для меня, обновляя мои инструменты поддержки сборки, а затем создавая новый проект с нуля.

Обновление: Android Studio-> Preferences ...-> Внешний вид & Behavior-> Система Настройка-> Android SDK-> Android SDK Строить-Сервис-> Установите флажок для обновления

0

я получил подобное вопрос.

мой инструктор попробует обновить API 22 до API 25, и это работа. Возможно, вы могли бы попробовать на этом же.

0

происходит, если вы начать обновление Android Studio и отменены в середине обновления завершения процесса обновления, и все должно вернуться к нормальному

Смежные вопросы