Android 只能从同一库组中调用AppCompatiActivity.onCreate

Android 只能从同一库组中调用AppCompatiActivity.onCreate,android,android-lint,android-appcompat,Android,Android Lint,Android Appcompat,升级到appcompat25.1.0后,我开始出现有线错误 在我的代码中: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 我得到lint错误: 只能从同一个库组(groupId=com.android.support)中调用AppCompatActivity.onCreate 如何防止这种行为?正如Felipe在他的文章中指出的,这是该

升级到appcompat
25.1.0
后,我开始出现有线错误

在我的代码中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
我得到lint错误:

只能从同一个库组(groupId=com.android.support)中调用AppCompatActivity.onCreate


如何防止这种行为?

正如Felipe在他的文章中指出的,这是该工具预发布版本中的一个例子

在Google发布修复程序之前,您现在可以通过在项目模块的build.gradle文件中添加以下内容来解决此问题:

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

值得注意的是,这可能会隐藏项目中的真实错误,因为它会抑制该类型的所有错误,因此,更好的选择是降级Android Studio的版本和项目中使用的工具。

禁用lintOptions中的警告看起来不是一个好的选择,最好在语句级别取消检查

在给出警告的代码行上方添加此注释:

//noinspection RestrictedApi

正如前面的回答所强调的,这是一个bug。我建议不要在整个项目范围内禁用特定的lint警告,而只针对该方法。按如下方式注释您的方法:

@SuppressLint("RestrictedApi")
@Override
public void setupDialog(Dialog dialog, int style) {
    super.setupDialog(dialog, style);
    //your code here
}

invalidateOptionsMenu()
替换为
supportInvalidateOptionsMenu()
。我不在代码中使用这样的方法听起来像是个bug:我要用这个。我可能是更好的解决方案,不禁用全局选项。这在Android Studio 3中不起作用。有什么变化吗?@vovahost我使用了
@suppressint(“RestrictedApi”)
而不是
//noinspection RestrictedApi
,在Android Studio 3中没有问题是的,当然,这个方法对我也适用,但是//noinspection只对一个更好的语句有效。@Sakiboy Cbr的解决方案适用于我不想使用的整个方法,因为它可能隐藏其他错误。这个答案最好,因为它不会全局禁用,它在IDE和编译时解决错误/警告,它很容易理解,因为它显式地列在方法的顶部(不同于
//noinspection RestrictedApi
,后者作为注释隐藏,只在IDE中静音警告,但在编译时不静音),并且它与最新版本的Android Studio和Gradle一起工作。应该使用这个答案。在项目上执行全局禁用从来都不是一个好主意。您也可以只在需要的行上使用此注释,而不是在整个方法上使用此注释。我建议@Cbr在下面给出答案,它只在方法级别上进行抑制,并且它在安卓Studio 3上工作,这与
//noinspection RestrictedApi
不同。