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.