AppCompatActivity.onCreate yalnızca aynı kitaplık grubu içinden çağrılabilir


109

Appcompat'a yükselttikten sonra 25.1.0kablolu hatalar almaya başladım.

Kodumda:

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

Tüy bırakmayan hata alıyorum:

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

Böyle bir davranış nasıl önlenir?


6
yerine invalidateOptionsMenu()sahip supportInvalidateOptionsMenu(). işi yapmalı
ᴛʜᴇᴘᴀᴛᴇʟ

1
pixel

Yanıtlar:


95

Felipe'nin yorumunda zaten belirttiği gibi, bu, araçların yayın öncesi sürümünde bir hata .

Google bir düzeltme yayınlayana kadar, proje modülünüzün build.gradle dosyasına aşağıdakileri ekleyerek şimdilik bu sorunu çözebilirsiniz:

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

Bu türdeki tüm hataları bastırdığı için bunun projenizdeki gerçek hataları gizleyebileceğini belirtmek gerekir, bu nedenle daha iyi seçenek, Android Studio sürümünün ve projede kullanılan araçların sürümünü düşürmek olacaktır.


5
@ Cbr'nin aşağıdaki cevabını öneririm, yalnızca yöntem düzeyinde bastırır ve aksine Android Studio 3'te çalışır //noinspection RestrictedApi.
Sakiboy

138

Önceki yanıtların vurgulandığı gibi, bu bir hatadır. Proje genelinde spesifik tüy bırakma uyarısını devre dışı bırakmamayı, yalnızca bu yöntem için öneririm. Yönteminize aşağıdaki gibi açıklama ekleyin:

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

4
Bu cevap en iyisidir çünkü global olarak devre dışı bırakmaz, IDE'deki hatayı / uyarıyı çözer ve derleme zamanında anlaşılması kolaydır, çünkü açıkça yöntemin en üstünde listelenir ( //noinspection RestrictedApihangisinin yorum olarak gizlendiğinin aksine ve yalnızca IDE'deki uyarıyı susturur, ancak derleme zamanında susturmaz) ve Android Studio ve Gradle'ın en yeni sürümüyle çalışır.
Sakiboy

1
Bu cevap kullanılmalıdır. Projede genel bir engelleme yapmak asla iyi bir fikir değil.
Christopher Smit

1
Bu ek açıklamayı tüm yöntem için bastırmak yerine yalnızca ihtiyacınız olan satırda da kullanabilirsiniz
Ben Kane

65

LintOptions'daki uyarıyı devre dışı bırakmak iyi bir seçenek gibi görünmüyor, ifade düzeyinde denetimi bastırmak daha iyidir.

Bu yorumu, uyarıyı veren kod satırının üzerine ekleyin:

//noinspection RestrictedApi

2
Ben bununla gidiyorum. Genel olarak lintOptions'ı devre dışı bırakmamak için daha iyi bir çözüm olabilirim. Thx
Yoraco Gonzales

4
Android Studio 3'te çalışmıyor. Bazı değişiklikler oldu mu?
vovahost

13
@vovahost Android Studio 3'te sorunsuz @SuppressLint("RestrictedApi")yerine kullanıyorum//noinspection RestrictedApi
vektör

1
Evet eminim, o da benim için çalışıyor ama // noinspection sadece daha iyi olan tek bir ifade için çalışıyor.
vovahost

1
@Sakiboy Cbr'nin çözümü, diğer hataları gizleyebileceği için kullanmak istemediğim tüm yöntem için geçerlidir.
vovahost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.