Bố cục <layout> trong bố cục không có khai báo nào trong thư mục bố cục cơ sở [error]


97

Sau khi chuyển từ Eclipse sang phiên bản mới của Android Studio 3.2, API 28, tôi gặp lỗi sau trên bố cục ứng dụng của mình:

Bố cục trong bố cục không có khai báo trong thư mục bố cục cơ sở; điều này có thể dẫn đến sự cố khi tài nguyên được truy vấn trong cấu hình không khớp với bộ định lượng này

Một trong những bố cục mà tôi gặp lỗi này là:

<?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>

Tôi gặp lỗi trên dòng đầu tiên của LinearLayout đầu tiên.

Có ai biết làm thế nào để giải quyết lỗi này?

Cảm ơn bạn

CẬP NHẬT: Có vẻ như đây là sự cố mã hóa. Tôi đã sao chép các tệp xml trong thư mục bằng Windows Explorer. Sau khi xóa các tệp và xử lý chúng bên trong Android Studio, vấn đề đã được giải quyết.


@L Kemp một lần cho tôi xem logcat ur
Vijaya Varma Lanke

@Varma thực sự ứng dụng chạy mà không có lỗi. Tôi chỉ có thể thấy lỗi khi tôi mở file xml, nhưng cách bố trí của file xml này chạy bình thường
L Kemp

fill_parent bị phản đối từ API 8 và thay thế bằng match_parent ViewGroup.LayoutParams
Mahdi Javaheri

@MahdiJavaheri Cảm ơn lời khuyên của bạn, tuy nhiên, tôi đã biết điều đó, tôi đang xóa từng chút một mã không dùng nữa.
L Kemp

Trong trường hợp của tôi, đó là vấn đề liên quan đến tên tệp, bạn cũng có thể kiểm tra bằng cách đổi tên tệp của mình bằng chữ hoa nhỏ
Akash kumar

Câu trả lời:


135

Trong trường hợp của tôi, việc đóng và mở lại Android studio đã giải quyết được vấn đề. Xây dựng lại dự án hoặc xóa bộ nhớ cache không giúp được gì.


3
Tôi thấy điều này mỗi khi tôi thêm tệp bố cục mới. Khởi động lại / xây dựng lại sửa chữa nó nhưng có ai tìm thấy nguyên nhân gốc rễ của nó không?
HBB20

Lưu ý rằng Build> Clean Project đã giải quyết vấn đề cho tôi.
Vivid Kraig

54

Bạn cũng có thể thử điều này:

File => Invalidate Caches / Restart => Invalidate and Restart.

ảnh chụp màn hình


2
Có, nó có ích, nhưng kỳ lạ là trong các phiên bản trước Build> Rebuild Project đã giúp. Họ bị rơi một cái gì đó.
CoolMind

Tôi đã thêm một điểm cộng cho bạn, vì các giải pháp của bạn hoạt động cho AS 3.2 (trong trường hợp của tôi là không có Eclipse).
CoolMind

15

Trong trường hợp của tôi, đó là việc sử dụng các chữ cái in hoa trong tên tệp. Tôi để mọi thứ ở dạng chữ thường và nó đã được sửa.


Đây là vấn đề của tôi. Thật là một lỗi kỳ lạ. Chỉ cần làm cho nó viết thường và tất cả đều tốt.
Panama Jack

10

Nếu bạn nghĩ ra bố cục của mình: layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp

bạn nên thêm bố cục theo mặc định như sau:

nhập mô tả hình ảnh ở đây


6

Tôi gặp lỗi này khi di chuyển tệp bố cục giữa các mô-đun Gradle . Tôi không phải đi xa đến mức làm mất hiệu lực bộ nhớ đệm vì nó tự giải quyết khi tôi khởi động lại Android Studiolàm sạch dự án . Có vẻ như đây là một lỗi IDE .


5

Trong trường hợp của tôi, tôi đã giải quyết điều đó với điều này :

Android nói cho tôi lỗi id này : MissingDefaultResource như tài liệu nói:

Nếu một tài nguyên chỉ được xác định trong các thư mục có định tính như -land hoặc -en và không có khai báo mặc định trong thư mục cơ sở (bố cục hoặc giá trị, v.v.), thì ứng dụng sẽ bị lỗi nếu tài nguyên đó được truy cập trên một thiết bị có thiết bị đang ở trong một cấu hình thiếu bộ định tính nhất định.

Là một trường hợp đặc biệt, các phần có thể kéo không phải được chỉ định trong thư mục cơ sở; nếu có sự trùng khớp trong thư mục mật độ (chẳng hạn như drawable-mdpi) thì hình ảnh đó sẽ được sử dụng và chia tỷ lệ. Tuy nhiên, lưu ý rằng nếu bạn chỉ chỉ định một drawable trong một thư mục như drawable-en-hdpi, ứng dụng sẽ gặp sự cố ở các ngôn ngữ không phải tiếng Anh.

Có thể có các tình huống trong đó bạn có một tài nguyên, chẳng hạn như -fr có thể kéo được, chỉ được tham chiếu từ một số tài nguyên khác có cùng định tính (chẳng hạn như kiểu -fr), bản thân nó có các dự phòng an toàn. Tuy nhiên, điều này vẫn làm cho ai đó có thể vô tình tham chiếu đến tệp có thể vẽ và sự cố, vì vậy sẽ an toàn hơn nếu tạo dự phòng giả mặc định trong thư mục cơ sở. Ngoài ra, bạn có thể khắc phục sự cố bằng cách thêm công cụ: ignore = "MissingDefaultResource" trên phần tử.

(Trường hợp này thường xảy ra với các bản dịch chuỗi, trong đó bạn có thể xóa mã và các tài nguyên tương ứng, nhưng quên xóa bản dịch. Có một id vấn đề dành riêng cho trường hợp đó, với 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">

Nhưng đây là giải pháp dễ dàng, bởi vì bạn bỏ lỡ quyền sử dụng trong Android.

Tôi giải quyết vấn đề này với tùy chọn hệ thống tệp . Nếu Android cho bạn biết về việc thiếu nguồn cung cấp có nghĩa là một số thứ bị thiếu và bạn nên bổ sung điều đó.

bạn sẽ đi đến \ app \ src \ main \ res

có thể: nhấp chuột phải vào thư mục bị thiếu của tệp, hiển thị trong Exporer và quay lại \ app \ src \ main \ res

Bạn nên tìm

/layout

/layout-normal

/layout-large

/some more folders

Bạn sẽ tìm thấy các tệp bị thiếu ở đâu. Trong trường hợp của tôi, nó bị thiếu trong / layout



3

Trong trường hợp của tôi, vấn đề này là do chữ hoa. Các ký tự sai như "-" cũng có thể gây ra sự cố. Tôi đã thay đổi tên từ Activity_disease.xmlthành activity_disease.xmlvà sự cố đã được khắc phục.


2

Không có gì hiệu quả với tôi như xây dựng lại dự án hoặc Làm mất hiệu lực bộ nhớ cache. Trong trường hợp của tôi, việc đóng và mở lại Android studio đã giải quyết được vấn đề .


1

Trong trường hợp của tôi, có vẻ như Google đã từng mong đợi (hoặc ít nhất là chấp nhận) các tên khác nhau giữa các bố cục khác nhau; Tôi đã có một time_dialog.xmlvà một time_dialog_landscape.xml. Đổi tên sau để time_dialog.xmlkhắc phục sự cố.


1

Tôi đã giải quyết vấn đề này bằng cách chỉ đồng bộ hóa dự án với gradle


1

Đối với tôi, các bước sau đã làm cho nó hoạt động:

  1. Cắt tất cả mã ra khỏi trang ( ctrl+ A+ Xcho windows)
  2. Dán mã trở lại.

Cái gì tôi đã làm cho một vấn đề tương tự trong strings.xmlquá, tôi đồng ý với điều này một
Kevin Murvie

0

Sự cố này dường như đang xảy ra vì studio hoặc trình biên dịch không thể tìm thấy tệp tài nguyên bên trong thư mục bố trí cơ sở. Để giải quyết vấn đề, bạn có thể cần tạo tệp thành các thư mục bố cục khác nhau. Nếu bạn đang sử dụng thư mục bố cục v21, v25, v.v. để thiết kế bố cục cho các thiết bị mục tiêu khác nhau thì bạn cũng có thể cần đặt các tệp tài nguyên của mình ở đó.


0

Trong trường hợp của tôi, cảnh báo này xuất hiện do ký tự "sai" (dấu chấm) được sử dụng trong tên giá trị:

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

Xóa dấu chấm (nhấp chuột phải vào tên, sau đó Refactor-Rename trong Android Studio) đã giải quyết được sự cố.


0

Dự tiệc muộn nhưng trường hợp của tôi khác với trường hợp trên.

Tôi vừa đổi tên tài nguyên và nó bắt đầu hoạt động.

Trên thực tế, tên tài nguyên của tôi là ic_menu_black_24dp.xml nên nó xung đột với tài nguyên menu của android.


nó sẽ không xung đột, vì các tài nguyên hệ thống nằm trong một không gian tên khác và ngay cả khi chúng có, việc ghi đè bằng bản sao cục bộ của bạn hẳn đã ổn.
Brill Pappin

1
Trên thực tế, tôi gặp lỗi tương tự như OP, đó là do các nguyên nhân khác không được liệt kê ở trên vì vậy tôi đã giải quyết nó theo bước trên.
Ashish Shukla

0

Điều hiệu quả đối với tôi là xóa thuộc tính id

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

từ tài nguyên bố cục.


0

Điều gì đã giải quyết nó cho tôi:

Trong Android Studio, nhấp chuột phải vào tên tệp trong thư mục bố cục và chọn Định dạng lại , không có hộp đánh dấu đặc biệt nào được chọn trên màn hình tiếp theo.

Không chắc những gì chính xác đang diễn ra ở đây, nhưng điều đó đã hiệu quả.


0

Tôi đã gặp sự cố sau khi sao chép / dán mã vào tệp bố cục XML, nhưng tôi đã khắc phục sự cố bằng cách tạo tệp theo cách thủ công. Rất lạ, vì mã hoàn toàn giống nhau, nhưng bằng cách nào đó nó đã khắc phục được vấn đề này. Tôi đã thử khởi động lại và thực hiện sửa lỗi "File => Invalidate Caches / Restart => Invalidate and Restart", nhưng sự cố chỉ được khắc phục bằng cách tạo lại tệp theo cách thủ công.


0

Lưu ý rằng khi bạn đang sử dụng các phiên bản khác nhau của bố cục như ( Lớn / Nhỏ / Nornal ) thì trường hợp đó bạn phải có cùng một thư mục bố cục chính. như cách này

nhập mô tả hình ảnh ở đây



0

Trong trường hợp của tôi, lỗi tương tự cũng hiển thị vì tên tệp bố cục và tệp bố trí khác nhau.

Trường hợp của tôi: layout-land -> my_layout_land layout -> my_layout

Tôi đã giải quyết nó bằng cách đặt cả hai tên tệp giống nhau. Bởi vì nếu bạn đang sử dụng layout-land và bạn có một tệp trong layout-land thì bạn cũng phải có một tệp trong thư mục layout.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.