Ngoại lệ được đưa ra trong quá trình hiển thị: Không thể định vị chế độ 0


91

Sau khi cập nhật BuildToolslên phiên bản 25.0.0.

compileSdkVersion 25
buildToolsVersion "25"

Tôi gặp sự cố với bản xem trước bố cục Android. Bây giờ nó hiển thị lỗi:

Ngoại lệ được đưa ra trong quá trình hiển thị: Không thể định vị chế độ 0

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

Tôi đã cố gắng làm sạch & xây dựng lại dự án, nhưng nó không hoạt động. Trước khi cập nhật mọi thứ đều tốt.

Tôi biết rằng tôi có thể quay lại các phiên bản trước của BuildTools, nhưng tôi muốn biết tại sao nó không hoạt động trên phiên bản 25.0.0?


Có vẻ như nó là một vấn đề với RecyclerView

java.lang.IllegalStateException: Unable to locate mode 0
at android.view.DisplayInfo.findMode(DisplayInfo.java:458)
at android.view.DisplayInfo.getMode(DisplayInfo.java:445)
at android.view.Display.getRefreshRate(Display.java:648)
at android.support.v7.widget.RecyclerView.onAttachedToWindow(RecyclerView.java:2392)
at android.view.View.dispatchAttachedToWindow(View.java:15392)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2953)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2960)
at android.view.AttachInfo_Accessor.setAttachInfo(AttachInfo_Accessor.java:42)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:333)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:389)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:548)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:533)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:966)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:533)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$53(RenderTask.java:659)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

15
Có vẻ như một lỗi với 25.0.0. Tôi đã mở một vấn đề cho nó: code.google.com/p/android/issues/...
Jim Pekarek

2
Tôi gặp vấn đề tương tự với compileSdkVersion 24 / buildToolsVersion "24.0.2" - tuy nhiên tôi đã để Android Studio thực hiện cập nhật (về nhiều thứ khác nhau, về cơ bản là những gì nó yêu cầu cập nhật) vào ngày hôm qua và tôi tin rằng nó đã bị hỏng sau đó.
Steven Craft

1
@HenriquedeSousa Sự cố phát sinh khi en.wikipedia.org/wiki/Andy_Rubin rời khỏi #Google
IntelliJ Amiya

Câu trả lời:


111

Đây vấn đề đã được giải quyết, cập nhật thư viện hỗ trợ

compile 'com.android.support:recyclerview-v7:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:25.0.1'

62

Đó là một lỗi khó chịu của phiên bản 25. Giải pháp tạm thời là hạ cấp dự án của bạn,

 compile 'com.android.support:appcompat-v7:24.2.1'
 compile 'com.android.support:design:24.2.1'
 compile 'com.android.support:recyclerview-v7:24.2.1'

18

Một giải pháp tạm thời khác là thay thế <android.support.v7.widget.RecyclerViewbằng <RecyclerViewđể bạn có thể thấy Chế độ xem được kết xuất. Khi biên dịch, hãy thay đổi nó trở lại<android.support.v7.widget.RecyclerView


7

Thư viện hỗ trợ Android cung cấp các chức năng tiện ích tương thích ngược. Các ứng dụng có thể sử dụng các chức năng tiện ích này để cung cấp trải nghiệm người dùng thích hợp trên nhiều phiên bản hệ thống Android.

Đó là một vấn đề lỗi và sẽ được khắc phục trong Bản phát hành trong tương lai của thư viện thiết kế hỗ trợ .

Bạn nên hạ cấp phiên bản của mình cho Giải pháp tạm thời .

compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:design:v7:25.0.1' 
compile 'com.android.support:recyclerview-v7:25.0.1' 

6

Để xem bản xem trước, tôi sử dụng thủ thuật này ..... thêm app:layoutManager="0"cho Chế độ xem tái chế trong một XML bố cục

Nhưng nó sẽ ném InflateException vào thời gian chạy. Vì vậy, hãy XÓA thuộc tính này khỏi tệp bố cục XML trước khi chạy ứng dụng!


4

Như giải pháp tạm thời, bạn có thể tạo lớp con của chế độ xem trình tái chế và chỉ ghi đè trênAttachedToWindow như bên dưới. Sau đó, sử dụng lớp này trong các bố cục XML của bạn

@Override
protected void onAttachedToWindow() {
    if (!isInEditMode()) {
        super.onAttachedToWindow();
    }
}

Cập nhật: bắt đầu từ thư viện hỗ trợ 25.0.1, bản sửa lỗi đã được đưa vào thư viện và sự cố không tồn tại nữa

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.