123 votes

AppCompatActivity.onCreate ne peut être appelé qu'à partir du même groupe de bibliothèques.

Après la mise à niveau vers appcompat 25.1.0 J'ai commencé à avoir des erreurs de câblage.

Dans mon code :

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

Je reçois une erreur de lint :

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

Comment prévenir un tel comportement ?

7 votes

Remplacer invalidateOptionsMenu() con supportInvalidateOptionsMenu() . il devrait faire l'affaire

1 votes

Je n'utilise pas de telles méthodes dans mon code

3 votes

On dirait qu'il s'agit d'un bogue : code.google.com/p/Android/issues/detail?id=230387

161voto

DimitrisCBR Points 1471

Comme les réponses précédentes l'ont souligné, c'est un bug. Je recommande de ne pas désactiver l'avertissement spécifique de lint à l'échelle du projet, mais uniquement pour cette méthode. Annotez votre méthode comme suit :

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

5 votes

Cette réponse est la meilleure parce qu'elle ne désactive pas globalement, qu'elle résout l'erreur/l'avertissement dans l'IDE et au moment de la compilation, qu'elle est facile à comprendre parce qu'elle est explicitement listée au début de la méthode (contrairement à la méthode //noinspection RestrictedApi qui est caché comme un commentaire, et ne fait taire l'avertissement que dans l'IDE, mais pas au moment de la compilation), et il fonctionne avec la dernière version d'Android Studio et de Gradle.

1 votes

Cette réponse doit être utilisée. Il n'est jamais bon de procéder à une désactivation globale du projet.

1 votes

Vous pouvez également utiliser cette annotation sur la seule ligne où vous en avez besoin au lieu de la supprimer pour l'ensemble de la méthode.

106voto

Martin Points 1212

Comme Felipe l'a déjà souligné dans son commentaire il s'agit d'un bogue dans la version préliminaire des outils.

Vous pouvez contourner ce problème pour l'instant, jusqu'à ce que Google publie un correctif, en ajoutant les éléments suivants dans le fichier build.gradle de votre module de projet :

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

Il convient de noter que cela peut cacher de véritables erreurs dans votre projet, car il supprime toutes les erreurs de ce type, de sorte que la meilleure option serait de rétrograder la version d'Android Studio et les outils utilisés dans le projet.

6 votes

Je suggère la réponse de @Cbr ci-dessous, elle ne supprime qu'au niveau de la méthode, et elle fonctionne sur Android Studio 3, contrairement à la réponse de @Cbr. //noinspection RestrictedApi .

69voto

Killer Points 1737

La désactivation de l'avertissement dans lintOptions ne semble pas être une bonne option ; il est préférable de supprimer l'inspection au niveau de l'énoncé.

Ajoutez ce commentaire au-dessus de la ligne de code qui donne l'avertissement :

//noinspection RestrictedApi

2 votes

J'opte pour celui-ci. Il serait peut-être préférable de ne pas désactiver globalement les lintOptions. Merci beaucoup.

4 votes

Ne fonctionne pas dans Android Studio 3. Y a-t-il eu des changements ?

0 votes

Je ne peux pas dire cela car j'utilise la dernière version bêta pour tous mes projets. Et je n'ai trouvé aucun problème

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X