2016-12-14 33 views
53

Po aktualizacji do kompilacji aplikacji 25.1.0 Zacząłem otrzymywać błędy przewodowe.AppCompatActivity.onCreate można wywołać tylko z tej samej grupy bibliotek

W moim kodu:

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

otrzymuję błąd niestrzępiącą:

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

Jak uniknąć takiego zachowania?

+6

Zamień 'invalidateOptionsMenu()' z 'supportInvalidateOptionsMenu()'. powinienem wykonać zadanie –

+1

Nie używam takich metod w moim kodzie – pixel

+3

Wygląda na to, że to błąd: https://code.google.com/p/android/issues/detail?id=230387 –

Odpowiedz

48

Jak już Felipe zauważył w swoim comment jest to bug w wersji wstępnej narzędzi.

można obejść go teraz, aż Google wydać poprawkę, poprzez dodanie następujących do modułu projektowego pliku build.gradle:

android { 
    lintOptions { 
    disable 'RestrictedApi' 
    } 
} 

Warto zauważyć, że może to ukryć prawdziwe błędy w projekcie jako eliminuje wszystkie błędy tego typu, więc lepszym rozwiązaniem byłoby obniżenie wersji Androida Studio i narzędzi używanych w projekcie.

+4

Polecam @ Odpowiedź Cbr poniżej, to tylko tłumi na poziomie metody i działa na Android Studio 3, w przeciwieństwie do '// noinspection RestrictedApi'. – Sakiboy

56

Wyłączenie ostrzeżenia w lintOptions nie wygląda dobrze, lepiej wstrzymać kontrolę na poziomie instrukcji.

Dodaj komentarz powyżej linii kodu, który daje ostrzeżenie:

//noinspection RestrictedApi 
+1

Idę z tym. Mogę być lepszym rozwiązaniem, aby nie wyłączać LintOptions na całym świecie. Thx –

+2

Nie działa w Android Studio 3. Czy były jakieś zmiany? – vovahost

+0

nie mogę tego powiedzieć, ponieważ używam najnowszej wersji beta do wszystkich moich projektów. I nie znalazłem żadnego problemu – Killer

45

Jak podkreślono wcześniejsze odpowiedzi, jest to bug. Zalecam, aby nie wyłączać konkretnego ostrzeżenia o lintach na całym projekcie, ale tylko dla tej metody. Opisz swoją metodę w następujący sposób:

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

Ta odpowiedź jest najlepsza, ponieważ nie wyłącza się globalnie, rozwiązuje błąd/ostrzeżenie w IDE, a podczas kompilacji jest łatwa do zrozumienia, ponieważ jest wyraźnie wymieniona na górze metody (w przeciwieństwie do '// noinspection RestrictedApi', która jest ukryty jako komentarz i tylko wycisza ostrzeżenie w IDE, ale nie w czasie kompilacji) i działa z najnowszą wersją Androida Studio i Gradle. – Sakiboy