AppCompatActivity.onCreateは、同じライブラリグループ内からのみ呼び出すことができます


106

appcompat 25.1.0にアップグレードした後、有線エラーが発生し始めました。

私のコードでは:

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

lintエラーが発生します。

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

そのような行動を防ぐ方法は?


6
置き換えるinvalidateOptionsMenu()supportInvalidateOptionsMenu()。それは仕事をしなければならない
ᴛʜᴇᴘᴀᴛᴇʟ

1
私はコードでそのようなメソッドを使用していません
pixel

回答:


94

フェリペが彼のコメントですでに指摘したように、これはツールのプレリリース版のバグです。

今のところ、Googleが修正をリリースするまで、プロジェクトモジュールのbuild.gradleファイルに以下を追加することで回避できます。

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

これにより、そのタイプのすべてのエラーが抑制されるため、プロジェクトの真のエラーが非表示になる可能性があります。そのため、Android Studioのバージョンとプロジェクトで使用されるツールをダウングレードすることをお勧めします。


5
以下の@Cbrの回答をお勧めします。これはメソッドレベルでのみ抑制され、Android Studio 3とは異なり//noinspection RestrictedApiます。
Sakiboy

136

以前の回答が強調したように、それはバグです。特定の糸くずの警告をプロジェクト全体で無効にするのではなく、その方法のみをお勧めします。次のようにメソッドに注釈を付けます。

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

3
この回答はグローバルに無効にならず、IDEのエラー/警告を解決し、コンパイル時に、メソッドの上部に明示的にリストされているため、簡単に理解できます(//noinspection RestrictedApiコメントとして非表示になっているのとは異なり、 IDEでの警告は表示されませんが、コンパイル時は表示されません)。最新バージョンのAndroid StudioとGradleで動作します。
Sakiboy

この答えを使用する必要があります。プロジェクトをグローバルに無効にすることは決して良い考えではありません。
Christopher Smit

メソッド全体を非表示にする代わりに、必要な行だけにこのアノテーションを使用することもできます
Ben Kane

64

lintOptionsで警告を無効にしても適切なオプションとは見なされないため、ステートメントレベルで検査を抑制した方がよいでしょう。

警告を与えるコード行の上にこのコメントを追加します。

//noinspection RestrictedApi

2
私はこれを使います。lintOptionsをグローバルに無効にしない方が良い解決策かもしれません。Thx
Yoraco Gonzales

4
Android Studio 3では機能しません。いくつか変更がありましたか?
vovahost 2017年

12
@vovahost私はAndroid Studio 3で問題@SuppressLint("RestrictedApi")なく代わりに使用します//noinspection RestrictedApi
ベクトル

1
はい、確かに1つは私にとっても機能しますが、// noinspectionは1つのステートメントに対してのみ機能します。
vovahost '19年

1
@Sakiboy Cbrの解決策は、他のエラーを隠す可能性があるため、使用したくないメソッド全体に適用されます。
vovahost 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.