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


107

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

在我的代码中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

我收到棉绒错误:

AppCompatActivity.onCreate can only be called from within the same library group (groupId=com.android.support)

如何预防这种行为?


6
替换invalidateOptionsMenu()supportInvalidateOptionsMenu()。它应该做的工作
2016年

1
我没有在我的代码使用这些方法
像素

Answers:


94

正如Felipe在评论中已经指出的那样,这是工具的预发行版本中的错误

您可以暂时解决该问题,直到Google发布修复程序为止,方法是将以下内容添加到项目模块的build.gradle文件中:

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

值得注意的是,这会隐藏项目中的所有错误,因此可能会在项目中隐藏真正的错误,因此更好的选择是降级Android Studio的版本以及项目中使用的工具。


5
我建议在下面提供@Cbr的答案,它只在方法级别禁止显示,并且它与Android Studio 3兼容//noinspection RestrictedApi
Sakiboy '17

137

正如先前的回答所强调的,这是错误。我建议不要在项目范围内禁用特定的棉绒警告,而应仅针对该方法。注释您的方法,如下所示:

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

4
这个答案是最好的,因为它不会全局禁用,它可以解决IDE中的错误/警告,并且在编译时很容易理解,因为它显式地列在方法的顶部(与//noinspection RestrictedApi作为注释隐藏的方法不同,只会在IDE中使警告静音,但不会在编译时使警告消失),并且可以与最新版本的Android Studio和Gradle一起使用。
Sakiboy '17

1
应该使用这个答案。永远不要对项目执行全局禁用。
Christopher Smit

1
您还可以使用此批注仅上线,你需要它,而不是抑制整个方法
本·凯恩

64

在lintOptions中禁用警告似乎不是一个好的选择,最好在语句级别禁止检查。

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

//noinspection RestrictedApi

2
我要用这个。我可能是一个更好的解决方案,而不是全局禁用lintOptions。Thx
Yoraco Gonzales'May

4
在Android Studio 3中不起作用。是否进行了一些更改?
vovahost

13
我在Android Studio 3中使用@vovahost @SuppressLint("RestrictedApi")而不是//noinspection RestrictedApi没有问题
矢量

1
是的,肯定对我也有用,但是// noinspection仅对一条语句有效,这更好。
vovahost

1
@Sakiboy Cbr的解决方案适用于我不想使用的整个方法,因为它可能隐藏其他错误。
vovahost
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.