Android Studio 3.2, API 28로 마이그레이션 한 후 앱 레이아웃에 다음 오류가 표시됩니다.
레이아웃의 레이아웃은 기본 레이아웃 폴더에 선언이 없습니다. 이 한정자와 일치하지 않는 구성에서 리소스를 쿼리하면 충돌이 발생할 수 있습니다.
이 오류가 발생하는 레이아웃 중 하나는 다음과 같습니다.
<?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>
첫 번째 LinearLayout의 첫 번째 줄에 오류가 발생합니다.
누구든지이 오류를 해결하는 방법을 알고 있습니까?
감사합니다
업데이트 : 무엇이 문제를 해결했는지 내 질문에 대답했습니다.
답변
제 경우에는 Android 스튜디오를 닫고 다시 열면 문제가 해결되었습니다. 프로젝트를 다시 빌드하거나 캐시를 지우는 것은 도움이되지 않았습니다.
답변
답변
제 경우에는 파일 이름에 대문자를 사용했습니다. 나는 모든 것을 소문자로 남겨두고 수정되었습니다.
답변
레이아웃을 고안하는 경우 : layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp ….
기본적으로 다음과 같이 레이아웃을 추가해야합니다.
답변
Gradle 모듈간에 레이아웃 파일을 이동할 때이 오류가 발생했습니다 . 프로젝트를 다시 시작 하고 정리할 때 자체적으로 해결 되므로 캐시 를 무효화 할 때 까지 갈 필요가 없었습니다 . IDE 버그 인 것 같습니다 .Android Studio
답변
제 경우에는 다음 과 같이 해결했습니다 .
안드로이드는이 id-error : MissingDefaultResource 를 문서로 말합니다.
리소스가 -land 또는 -en과 같은 한정자가있는 폴더에만 정의되고 기본 폴더 (레이아웃 또는 값 등)에 기본 선언이없는 경우 해당 리소스가 디바이스가있는 디바이스에서 액세스되면 앱이 충돌합니다. 주어진 한정자가없는 구성에 있습니다.
특수한 경우 드로어 블을 기본 폴더에 지정할 필요가 없습니다. 밀도 폴더 (예 : drawable-mdpi)에 일치하는 항목이 있으면 해당 이미지가 사용되고 크기가 조정됩니다. 그러나 drawable-en-hdpi와 같은 폴더에 드로어 블 만 지정하면 영어가 아닌 로케일에서 앱이 중단됩니다.
동일한 한정자 (예 : -fr 스타일)를 가진 다른 리소스에서만 참조되는 -fr 드로어 블과 같은 리소스가 있고 자체적으로 안전한 폴 백이있는 시나리오가있을 수 있습니다. 그러나 이렇게하면 누군가가 실수로 드로어 블을 참조하고 충돌 할 수 있으므로 기본 폴더에 기본 더미 폴백을 만드는 것이 더 안전합니다. 또는 요소에 tools : ignore = “MissingDefaultResource”를 추가하여 문제를 억제 할 수 있습니다.
(이 시나리오는 코드와 해당 리소스를 삭제할 수 있지만 번역을 삭제하는 것을 잊어 버릴 수있는 문자열 번역에서 자주 발생합니다. 해당 시나리오에 대한 전용 이슈 ID와 ID ExtraTranslation이 있습니다.)
<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">
그러나 이것은 쉬운 해결책입니다. 왜냐하면 당신은 안드로이드에서 자원을 놓치기 때문입니다.
파일 시스템 옵션 으로이 문제를 해결합니다 . 경우 안드로이드가 어떤 것을 의미 RESOURSE 실종에 대해 말씀이 없습니다 당신은 그것을 보충해야한다.
\ app \ src \ main \ res로 이동해야합니다.
아마도 : 파일의 누락 된 폴더를 마우스 오른쪽 버튼으로 클릭하고 Exporer에 표시 한 다음 \ app \ src \ main \ res로 돌아갑니다.
당신은 찾아야합니다
/layout
/layout-normal
/layout-large
/some more folders
파일이 누락 된 위치를 찾아야합니다. 내 경우에는 / layout에 누락되었습니다.
답변
난 그냥했다 Build > Clean Project