Po migracji do Android Studio 3.2, API 28, pojawia się następujący błąd w układzie mojej aplikacji:
Układ w układzie nie ma deklaracji w folderze układu podstawowego; może to prowadzić do awarii, gdy zasób jest odpytywany w konfiguracji, która nie pasuje do tego kwalifikatora
Jeden z układów, w których otrzymuję ten błąd, to:
<?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>
Otrzymuję błąd w pierwszym wierszu pierwszego LinearLayout.
Czy ktoś wie jak rozwiązać ten błąd?
Dziękuję Ci
AKTUALIZACJA: Odpowiedziałem na moje pytanie, co rozwiązało problem
android
xml
android-studio
L Kemp
źródło
źródło
Odpowiedzi:
W moim przypadku zamknięcie i ponowne otwarcie Android Studio rozwiązało problem. Odbudowanie projektu lub wyczyszczenie pamięci podręcznej nie pomogło.
źródło
Możesz też spróbować tego:
File => Invalidate Caches / Restart => Invalidate and Restart.
źródło
W moim przypadku było to użycie wielkich liter w nazwie pliku. Zostawiłem wszystko małymi literami i zostało to naprawione.
źródło
Jeśli opracujesz swój układ: layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp ....
powinieneś dodać układ domyślnie w ten sposób:
źródło
Otrzymałem ten błąd podczas przenoszenia plików układu między modułami Gradle . Nie musiałem posuwać się tak daleko, aby unieważniać pamięci podręczne, ponieważ rozwiązało się to samo, gdy uruchomiłem ponownie
Android Studio
i wyczyściłem projekt . Wygląda na to, że jest to błąd IDE .źródło
W moim przypadku rozwiązałem to w ten sposób :
Android powie mi ten błąd id: MissingDefaultResource, jak mówi dokumentacja:
<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">
Ale to jest łatwe rozwiązanie, ponieważ tracisz zasoby w Androidzie.
Rozwiązuję to za pomocą opcji systemu plików . Jeśli Android powie Ci o brakujących zasobach, co oznacza, że czegoś brakuje, powinieneś je uzupełnić.
powinieneś iść do \ app \ src \ main \ res
być może: kliknij prawym przyciskiem myszy folder brakujący pliku, pokaż w Exporer i wróć do \ app \ src \ main \ res
Powinieneś zostać znaleziony
Powinieneś znaleźć miejsce, w którym brakuje plików. W moim przypadku tego brakuje w / layout
źródło
właśnie zrobiłem
Build > Clean Project
źródło
W moim przypadku ten problem był spowodowany dużymi literami. Nieprawidłowe znaki, takie jak „-”, również mogą powodować problem. Zmieniłem nazwę z
Activity_disease.xml
naactivity_disease.xml
i problem został rozwiązany.źródło
Nic nie działało dla mnie jak odbudowanie projektu lub unieważnienie pamięci podręcznej. W moim przypadku zamknięcie i ponowne otwarcie Android Studio rozwiązało problem .
źródło
W moim przypadku wydaje się, że Google oczekiwał (lub przynajmniej akceptował) różne nazwy w różnych układach; Miałem
time_dialog.xml
itime_dialog_landscape.xml
. Zmiana nazwy tego ostatniego, abytime_dialog.xml
rozwiązać problem.źródło
Rozwiązałem ten problem, po prostu zsynchronizowałem projekt z Gradle
źródło
U mnie udało się wykonać następujące kroki:
źródło
strings.xml
, zgadzam się z tymWydaje się, że ten problem występuje, ponieważ studio lub kompilator nie może znaleźć pliku zasobów w folderze układu podstawowego. Aby rozwiązać problem, może być konieczne utworzenie pliku w różnych folderach układu. Jeśli używasz folderów układu v21, v25 itp. Do projektowania układów dla różnych urządzeń docelowych, może być również konieczne umieszczenie tam plików zasobów.
źródło
W moim przypadku to ostrzeżenie pojawiło się z powodu "niewłaściwego" znaku (kropki) użytego w nazwie wartości:
<dimen name="dp.divider.xlarge">24dp</dimen>
Usunięcie kropek (kliknij prawym przyciskiem myszy nazwę, a następnie Refactor-Rename w Android Studio) rozwiązało problem.
źródło
Spóźniłem się na imprezę, ale mój przypadek jest inny niż powyżej.
Właśnie zmieniłem nazwę zasobu i zaczęło działać.
Właściwie nazwa mojego zasobu to ic_menu_black_24dp.xml, więc było to w konflikcie z zasobem menu Androida.
źródło
Pomogło mi usunięcie atrybutu id
z zasobu układu.
źródło
Co mi to rozwiązało:
W Android Studio kliknij prawym przyciskiem myszy nazwę pliku w katalogu układu i wybierz opcję Sformatuj kod , bez specjalnego pola wyboru na następnym ekranie.
Nie jestem pewien, co dokładnie dzieje się pod maską, ale zadziałało.
źródło
Miałem problem po skopiowaniu / wklejeniu kodu do pliku układu XML, ale naprawiłem go, po prostu ręcznie tworząc plik. Bardzo dziwne, ponieważ kod był dokładnie taki sam, ale w jakiś sposób rozwiązał ten problem. Próbowałem zrestartować i wykonać poprawkę "File => Invalidate Caches / Restart => Invalidate and Restart", ale problem został rozwiązany tylko przez ręczne odtworzenie pliku.
źródło
Zwróć uwagę, że jeśli używasz różnych wersji układu, takich jak ( Duży / Mały / Nornal ), to w takim przypadku musisz mieć ten sam główny folder układu. w ten sposób
źródło
(1) Usuń oryginalny układ.
(2) Ponownie dodaj układ.
Krok 1
Krok 2
źródło
W moim przypadku ten sam błąd był wyświetlany, ponieważ plik układu i nazwa pliku układu były różne.
My Case: layout-land -> my_layout_land layout -> my_layout
Rozwiązałem to, czyniąc obie nazwy plików takimi samymi. Ponieważ jeśli używasz obszaru layoutu i masz plik w obszarze layoutu, musisz mieć również plik w folderze układu.
źródło
Skopiowałem pliki xml z folderu za pomocą Eksploratora Windows. Wygląda na to, że spowodował problem z kodowaniem. Po usunięciu plików i skopiowaniu ich w Android Studio problem został rozwiązany.
źródło