错误:方法调用不明确。 AppCompactActivity和Activity中的findViewById(int)

时间:2017-10-24 00:07:54

标签: android android-studio android-studio-3.0 appcompatactivity appcompat-v7-r22.1

我在使用Android Studio 3.0 RC1初始化工具栏时收到错误:“模糊方法调用”。我已经使用AppCompatActivity扩展了我的Activity并使用'compileSdkVersion 26'编译我的应用程序。 附上错误的屏幕截图。enter image description here

21 个答案:

答案 0 :(得分:29)

如果您最近将项目更新为API,请尝试

  

文件->使缓存无效/重新启动

然后

  

文件->使用Gradle文件同步项目

这个解决方法对我来说。

答案 1 :(得分:6)

升级到appcompat 27为我解决了这个问题

答案 2 :(得分:4)

对于我来说,将构建工具版本更改为27.0.2,因为所有其他依赖项都是API 27。

buildToolsVersion '27.0.2'

答案 3 :(得分:4)

我最近升级到构建工具版本27.0.2并遇到了同样的问题。但是注意到我将compileSdk版本设置为25.将compileSdk更改为27可以解决问题。

答案 4 :(得分:3)

你有

import android.support.v7.app.AppCompatActivity
import android.app.Activity

都在你的代码中。 正如我所见,删除import android.app.Activity,您不需要它。

答案 5 :(得分:3)

"文件 - 使高速缓存无效/重新启动"解决了我的问题。

答案 6 :(得分:2)

在运行诸如FindBugs-IDEA之类的代码分析器时,这可能突然出现。清除警告的一种快速方法是临时更改 buildToolsVersion 中的 app/build.gradle ,然后再次将其更改。

例如,请按照下列步骤操作:

  1. 打开您的 app / build.gradle 文件。
  2. buildToolsVersion更改为'26.0.1',然后同步项目(在顶部显示时,点击“立即同步”按钮
  3. buildToolsVersion改回以前的状态。
  4. 按“立即同步”按钮

这应该清除错误。

答案 7 :(得分:2)

对我来说,没有一个给定的解决方案有效,但我有这个问题,因为我的计算机上安装了25和27个android sdk。一旦我删除了sdk 25,问题就消失了。

答案 8 :(得分:1)

也许你在compileSdkVersion和targetSdkVersion之间有区别

答案 9 :(得分:1)

我遇到了与Android Studio 3.0.0 build 171.4408382相同的问题。在命令行上通过Gradle构建工作正常,但IDE向我提出了上述错误。我已尝试将API级别26与appcompat v26.1.0和API级别27与appcompat v27.0.1一起使用,但这两种组合均无效。

我的“解决方案”是将compileSdkVersion和targetSdkVersion降级到API级别25,将appcompat库降级到25.4.0版本。

对于所有提到的版本组合,我使用了Gradle plugin v3.0.0和Android构建工具v27.0.1。

答案 10 :(得分:0)

首先确保您没有使用旧支持库的传递依赖项。运行以下命令,确保没有使用旧的支持库。

gradlew :app:dependencies

确保使用最新的依赖项更新gradle文件。例如:compileSdkVersion 27,targetSdkVersion 27,buildToolsVersion 27.0.3。确保您的应用程序风味非使用自定义targetSdkVersion也是有益的。

按住Ctrl键并单击findViewById方法。它会告诉你2个(可能更多?)冲突的方法。在我的情况下,冲突发生在API 23和API 27的findViewById方法之间。因此,我不得不删除Android版本23的SDK和源代码。一旦我删除它并执行Invalidate Caches / Restart,它就解决了我的问题。

答案 11 :(得分:0)

如果答案无法解决您的问题,您可以重置您的Android工作室。 我解决了重置我的android工作室。 重置:https://stackoverflow.com/a/19397632/3129822

答案 12 :(得分:0)

对我来说,compileSdkVersion与使用的支持库不同

答案 13 :(得分:0)

我的compileSDK版本低于targetSDK版本,因此我所要做的就是匹配它们并同步项目,并解决了错误。

答案 14 :(得分:0)

删除“ Android快速网络”库解决了我的问题

答案 15 :(得分:0)

我遇到了同样的问题
我的与 build.gradle 应用程序中的 compileSdkVersion 编号相关。
更改为最新版本,并且对我有用。

答案 16 :(得分:0)

升级edit do field :company do inline_add false end field :title field :start_date field :description, :ck_editor field :active field :approved field :active_until field :searched_profile, :ck_editor field :specialization field :we_offer, :ck_editor field :motivation_letter field :application_email field :company_name field :company_size, :enum do enum do ApplicationController.helpers.company_size_collection.map { |size| [size[:en], size[:name]] } end end field :company_description, :ck_editor field :application_url, :string field :company_logo field :video_url field :study_domains do inline_add false end field :field_of_studies do inline_add false end field :users_candidacy do inline_add false end field :address field :sector, :enum do enum do ApplicationController.helpers.sector_collection.map { |sector| [sector[:en], sector[:name]] } end end field :department, :enum do enum do ApplicationController.helpers.department_collection.map { |department| [department[:en], department[:name]] } end end field :contract_type, :enum do enum do ApplicationController.helpers.contract_type_collection.map { |contract_type| [contract_type[:en], contract_type[:name]] } end end field :regime, :enum do enum do ApplicationController.helpers.regime_collection.map { |regime| [regime[:en], regime[:name]] } end end field :study_level, :enum do enum do ApplicationController.helpers.study_level_collection.map { |study_level| [study_level[:en], study_level[:name]] } end end field :language, :enum do enum do ApplicationController.helpers.primary_language_collection.map { |language| [language[:en], language[:value]] } end end end targetSdkVersion可能会解决问题。

答案 17 :(得分:0)

如果这是一个新项目,则无需使缓存无效/重新启动。

我正在处理一个新项目,在 gradle 文件中没有设置版本号,minsdkversion 和 targetdkversion 之间有“N”,更改为所需的 sdk 版本解决了问题

答案 18 :(得分:0)

appcompat 升级到 27 并将 compleSdkVersion 升级到 30 对我有用。只需在 gradle build 中升级即可。

答案 19 :(得分:0)

就我而言,我删除了 build.gradle (app) 文件中的约束布局依赖项,它解决了问题。

dependencies {
  implementation fileTree(dir: 'libs', include: ['*.jar'])
  implementation 'com.android.support:appcompat-v7:25.1.0'
  //implementation 'com.android.support.constraint:constraint-layout:2.0.4'
}

答案 20 :(得分:0)

只需升级您的 minSdkVersion 26 对我有用。