错误:找不到符号变量abc_ic_ab_back_mtrl_am_alpha

64
我在Android Studio项目中使用“新建>片段>片段(空白)”添加了一个片段。结果,当我尝试运行时,由于无法解析`R.drawable.abc_ic_ab_back_mtrl_am_alpha`而导致项目无法编译。
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

有任何解决方法吗?

看起来我也失去了对 android:buttonTint 的访问权限。


你是想从Activity或Fragment本身添加图片吗? - Pratik Tank
活动。通过快捷方式创建片段会破坏现有的代码结构。我还没有在片段中做任何事情,仅仅是创建它就成了问题。即使我删除了片段,问题仍然存在。 - Nouvel Travay
3
比起简单地说“尝试适用等级”,有更有意义的表达方法。 - Nouvel Travay
尝试将此代码放入片段的onCreate方法中。setHasOptionsMenu(true); - Charllon Lobo
你是否正在使用'com.android.support:appcompat-v7:23.2.1'进行编译? - IgorGanapolsky
显示剩余2条评论
5个回答

178

23.2.0支持库中的资源名称已更改。

abc_ic_ab_back_mtrl_am_alpha 修改为 abc_ic_ab_back_material

编辑: 在23.2.1中,该组件的名称被改回为abc_ic_ab_back_mtrl_am_alpha

编辑: 在24.0.0中,该组件的名称被更改为:abc_ic_ab_back_material


6
不完全正确。appcompat-v7中标记了这个新资源为私有。 - Danpe
2
我遇到了一个错误:无法找到符号变量abc_ic_ab_back_material - IgorGanapolsky
2
在支持库的最新版本(23.2.1)中,他们将其改回了abc_ic_ab_back_mtrl_am_alpha。 - Jon
1
在25.0.0版本中,abc_ic_ab_back_material被声明为“私有”。 - Dzmitry Lazerka
你在哪里可以更改这个值?它是自动构建的。 - Atieh
显示剩余9条评论

17

由于支持库中矢量可绘制实现的原因,似乎不再有光栅格式的图像。所以我放置了这个矢量可绘制文件,它代表了先前版本中的相同箭头。右键单击drawable文件夹,选择New -> Drawable resource file,并粘贴此xml代码:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">

    <path
        android:pathData="M0 0h24v24H0z" />
    <path
        android:fillColor="#ffffff"
        android:pathData="M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z" />
</vector>

来源

对于API <21,您需要将这些属性添加到gradle构建文件中:

Gradle插件2.0+

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

Gradle插件1.5

android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 

更多信息请参见此博客文章


7
在我的情况下,我是这样做的。
final ActionBar ab = mActivity.getSupportActionBar();
             ab.setHomeAsUpIndicator(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);

2

当我更新Android支持库至23.2.0版本时,出现了问题。

在我的情况下,我使用的第三方库产生了冲突。

我切换到第三方库的新版本来解决这个问题。


1
抱歉,这可能不是你要找的答案,但我也遇到了同样的问题,就在几分钟前。Android Studio提醒我,在我的Gradle文件中有一个更新版本的“com.google.android.gms”和“com.android.support”可用 - 当时,我对前者使用的是8.3.0,对后者使用的是23.1.1,所以我更新到了8.4.0和23.2.0,然后我遇到了和你一样的问题,Android Studio跳转到AFollestad的Material Dialogs库中的values-v11.xml文件,并且似乎这会导致问题,因为它使用AppCompat库
编辑:刚刚发现这个,如果你正在使用material-dialogs,请检查你是否使用的是版本0.8.5.5。如果不是,请升级到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接