Düzendeki <layout> düzeninin temel düzen klasöründe bildirimi yok [hata]


97

Android Studio 3.2, API 28'e geçtikten sonra, uygulamamın düzeninde aşağıdaki hatayı alıyorum:

Pafta içindeki mizanpajın temel mizanpaj klasöründe beyanı yoktur; Bu, kaynak bu niteleyiciyle eşleşmeyen bir yapılandırmada sorgulandığında çökmelere neden olabilir

Bu hatayı aldığım düzenlerden biri:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@null" >

      <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_top" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_bottom" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/hello_world"
            android:background="@color/white"
            android:layout_marginBottom="5dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:src="@drawable/loading_logo" />

        <ImageView
            android:id="@+id/loading"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp"
            android:contentDescription="@string/hello_world"
            android:scaleType="fitXY"
            android:src="@null" />
    </FrameLayout>
</LinearLayout>

Hatayı ilk LinearLayout'un ilk satırında alıyorum.

Bu hatayı nasıl çözeceğini bilen var mı?

teşekkür ederim

GÜNCELLEME: Sorunu benim için sorunu neyin çözdüğüyle yanıtladım


@L Kemp bir kez bana logcat'i göster
Vijaya Varma Lanke

@Varma aslında uygulama hatasız çalışıyor. Xml dosyasını açtığımda hatayı görebiliyorum, ancak bu xml dosyasının düzeni normal çalışıyor
L Kemp

fill_parent API 8'den beri kullanımdan kaldırıldı ve match_parent ViewGroup
Mahdi Javaheri

@MahdiJavaheri Tavsiyeniz için teşekkür ederim, ancak bunu zaten biliyordum, bu kullanımdan kaldırılan kodu yavaş yavaş kaldırıyorum.
L Kemp

Benim durumumda, dosya adıyla ilgili bir sorun vardı, dosyanızı küçük harflerle yeniden adlandırarak da kontrol edebilirsiniz
Akash kumar

Yanıtlar:


135

Benim durumumda Android stüdyosunu kapatıp yeniden açmak sorunu çözdü. Projeyi yeniden oluşturmak veya önbelleği temizlemek yardımcı olmadı.


3
Bunu her yeni düzen dosyası eklediğimde görüyorum. Yeniden başlatma / yeniden oluşturma sorunu düzeltir, ancak bunun kök nedenini bulan oldu mu?
HBB20

Build> Clean Project'in sorunu benim için çözdüğünü unutmayın.
Vivid Kraig

54

Ayrıca şunu da deneyebilirsiniz:

Dosya => Önbellekleri Geçersiz Kıl / Yeniden Başlat => Geçersiz Kıl ve Yeniden Başlat.

ekran görüntüsü


2
Evet, yardımcı oluyor, ancak garip, önceki sürümlerde Build> Rebuild Project'in yardımcı olması. Bir şeyi düşürdüler.
CoolMind

Çözümleriniz AS 3.2 için çalıştığı için (benim durumumda Eclipse olmadan) size bir artı ekledim.
CoolMind

15

Benim durumumda, dosya adında büyük harflerin kullanılmasıydı. Her şeyi küçük harfle bıraktım ve düzeltildi.


Bu benim sorunumdu. Ne tuhaf bir böcek. Sadece küçük harf yaptım ve her şey iyiydi.
Panama Jack

10

Düzeninizi tasarlarsanız: layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp

varsayılan olarak şu şekilde düzen eklemelisiniz:

görüntü açıklamasını buraya girin


6

Düzen dosyalarını Gradle modülleri arasında taşırken bu hatayı aldım . Bugüne kadar hiç olarak gitmek yoktu invalidate önbelleklerini ben tekrar başlatıldığında kendini çözüldü olarak Android Studiove proje temizlenmiş . Bir IDE hatası olması muhtemel görünüyor .


5

Benim durumumda bunu şu şekilde çözdüm :

Android bana şu kimlik hatasını söylüyor: MissingDefaultResource , dokümantasyon olarak şunu söylüyor:

Bir kaynak yalnızca -land veya -en gibi niteleyicilere sahip klasörlerde tanımlanmışsa ve temel klasörde (düzen veya değerler vb.) Varsayılan bildirim yoksa, bu kaynağa cihazın bulunduğu bir cihazdan erişilirse uygulama çökecektir. verilen niteleyicinin olmadığı bir konfigürasyonda.

Özel bir durum olarak, çekilebilir öğelerin temel klasörde belirtilmesi gerekmez; bir yoğunluk klasöründe (örneğin, drawable-mdpi) bir eşleşme varsa, bu görüntü kullanılacak ve ölçeklenecektir. Bununla birlikte, yalnızca drawable-en-hdpi gibi bir klasörde bir çekilebilir dosya belirtirseniz, uygulamanın İngilizce olmayan yerel ayarlarda çökeceğini unutmayın.

-Fr drawable gibi bir kaynağa sahip olduğunuz senaryolar olabilir, bu sadece aynı niteleyicilere sahip başka bir kaynaktan (-fr stili gibi), kendisinin de güvenli geri dönüşleri vardır. Bununla birlikte, bu yine de birisinin yanlışlıkla çekilebilir dosyaya referans vermesini ve çökmesini mümkün kılar, böylece temel klasörde varsayılan bir kukla yedek oluşturmak daha güvenlidir. Alternatif olarak, öğeye araçlar ekleyerek sorunu ortadan kaldırabilirsiniz: ignore = "MissingDefaultResource".

(Bu senaryo sıklıkla, kodu ve ilgili kaynakları silebileceğiniz, ancak bir çeviriyi silmeyi unutabileceğiniz dize çevirilerinde gerçekleşir. Bu senaryo için ExtraTranslation kimliğiyle özel bir sorun kimliği vardır.)

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:ignore="MissingDefaultResource" <!--this-->
      android:layout_width="match_parent"
      android:layout_height="match_parent">

Ancak bu kolay bir çözüm, çünkü Android'deki kaynakları özlüyorsunuz.

Bunu dosya sistemi seçeneği ile çözüyorum. Eğer Android bazı şey anlam resourse eksik anlatmak eksik ve bunu doldurmak gerekir.

\ app \ src \ main \ res konumuna gitmelisiniz

belki: dosyanın eksik klasörüne sağ tıklayın, Exporer'da gösterin ve \ app \ src \ main \ res konumuna geri dönün

Bulmalısın

/layout

/layout-normal

/layout-large

/some more folders

Dosyaların nerede eksik olduğunu bulmalısınız. Benim durumumda / layout'ta eksik



3

Benim durumumda bu soruna Büyük harf neden oldu. "-" gibi yanlış karakterler de soruna neden olabilir. Adını olarak Activity_disease.xmldeğiştirdim activity_disease.xmlve sorun düzeltildi.


2

Benim için projeyi yeniden oluşturmak veya önbelleği geçersiz kılmak gibi hiçbir şey çalışmadı. Benim durumumda Android stüdyosunu kapatıp yeniden açmak sorunu çözdü .


1

Benim durumumda, Google'ın farklı düzenler arasında farklı isimler beklediği (veya en azından kabul ettiği) görülüyor; Bir time_dialog.xmlve bir vardı time_dialog_landscape.xml. time_dialog.xmlSorunu çözmek için ikincisini yeniden adlandırmak .



1

Benim için aşağıdaki adımlar işe yaradı:

  1. Sayfadaki tüm kodu kesin ( Windows için ctrl+ A+ X)
  2. Kodu geri yapıştırın.

Ben de benzer bir sorun için yaptığım bir şey strings.xml, buna katılıyorum
Kevin Murvie

0

Bu sorun, stüdyo veya derleyicinin kaynak dosyasını temel düzen klasörü içinde bulamaması nedeniyle ortaya çıkıyor. Sorunu çözmek için, dosyayı farklı düzen klasörlerinde oluşturmanız gerekebilir. Farklı hedef aygıtlar için düzen tasarlamak için düzen klasörleri v21, v25 vb. Klasörler kullanıyorsanız, kaynak dosyalarınızı da oraya yerleştirmeniz gerekebilir.


0

Benim durumumda bu uyarı, değer adında kullanılan "yanlış" karakter (nokta) nedeniyle ortaya çıktı:

<dimen name="dp.divider.xlarge">24dp</dimen>

Noktaları kaldırmak (bir ada sağ tıklayın, ardından Android Studio'da Refactor-Rename) sorunu çözdü.


0

Partiye geç kaldım ama benim durumum yukarıdakinden farklı.

Sadece kaynak adını ve çalışmaya başladı.

Aslında benim kaynak adım ic_menu_black_24dp.xml idi, bu yüzden android'in menü kaynağıyla çelişiyordu.


sistem kaynakları farklı bir ad alanında olduğundan ve olsalar bile, yerel kopyanızla geçersiz kılmanın iyi olması gerektiği için çelişmemelidir.
Brill Pappin

1
Aslında OP ile aynı hatayı, yukarıda listelenmeyen diğer nedenlerden dolayı aldım, bu yüzden yukarıdaki adımda çözdüm.
Ashish Shukla

0

Benim için işe yarayan şey, kimlik özniteliğini kaldırmaktır

android:id="@+id/[id same as filename]"

düzen kaynağından.


0

Bunu benim için ne çözdü:

Android Studio'da, düzen dizinindeki dosya adına sağ tıklayın ve sonraki ekranda özel onay kutusu seçilmeden Kodu yeniden biçimlendir'i seçin .

Burada kaputun altında tam olarak ne olup bittiğinden emin değilim, ama işe yaradı.


0

Kodu bir XML mizanpaj dosyasına kopyalayıp / yapıştırdıktan sonra bir sorun yaşadım, ancak dosyayı manuel olarak oluşturarak sorunu çözdüm. Kod tamamen aynı olduğu için çok tuhaf, ancak bir şekilde bu sorunu çözdü. Yeniden başlatmayı ve "File => Invalidate Caches / Restart => Invalidate and Restart" düzeltmesini yapmayı denedim, ancak sorun yalnızca dosyayı manuel olarak yeniden oluşturarak düzeltildi.


0

Not Eğer (gibi düzenin farklı sürümlerini kullanırken o Büyük / Küçük / nornal o davayı) Aynı ana düzen klasörüne var. bu şekilde

görüntü açıklamasını buraya girin



0

Benim durumumda aynı hata gösteriliyordu çünkü layout-land dosyası ve layout dosya adı farklıydı.

Benim Vakam: layout-land -> my_layout_land layout -> my_layout

Her iki dosya adını da aynı yaparak çözdüm. Çünkü layout-land kullanıyorsanız ve layout-land'da bir dosyanız varsa, layout klasöründe de bir dosyanız olması gerekir.


0

Klasördeki xml dosyalarını Windows Gezgini'ni kullanarak kopyaladım. Bir kodlama sorununa neden olmuş gibi görünüyor. Dosyaları sildikten ve Android Studio içinde başladıktan sonra sorun çözüldü.


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.