2011-09-30 24 views
8

Tôi có một ứng dụng nhận được vài nghìn người dùng mỗi ngày. Tôi nhận được một số báo cáo thông qua thị trường rằng hoạt động nhập của tôi không thể tải tài nguyên xml bố cục của nó. Tôi không thấy thế nào điều này có thể là tốt ?:Không thể tìm thấy ID bố cục cho <1% người dùng?

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.me.app/com.me.app.MyActivity}: **android.content.res.Resources$NotFoundException: Resource ID #0x7f030065** 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3701) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030065 
at android.content.res.Resources.getValue(Resources.java:896) 
at android.content.res.Resources.loadXmlResourceParser(Resources.java:1873) 
at android.content.res.Resources.getLayout(Resources.java:735) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:318) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
at android.app.Activity.setContentView(Activity.java:1657) 
at com.me.app.MyBaseActivity.setContentView(MyBaseActivity.java:50) 
at com.me.app.MyActivity.onCreate(MyActivity.java:116) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 
... 11 more 

Những điểm ngoại lệ đối với dòng này:

setContentView(R.layout.my_layout); 

Bất kỳ ý tưởng những gì tôi có thể làm sai ở đây? Một lần nữa, đối với 99% người dùng, không có vấn đề gì.

Cảm ơn bạn

+1

Tôi đã trải nghiệm điều gì đó tương tự. Cho đến nay nó chỉ xảy ra một lần cho khoảng 5.000 người dùng (ít nhất nó chỉ được báo cáo một lần). Rất quan tâm để nghe nếu có ai biết tại sao điều này xảy ra. –

+0

Có mối tương quan nào với các thiết bị được sử dụng và/hoặc các phiên bản phần mềm/hệ điều hành không? –

+2

nơi my_layout.xml nằm ở đâu? bạn có hỗ trợ nhiều màn hình không? – Selvin

Trả lời

1

Tôi đồng ý với nhận xét về câu hỏi khắc phục sự cố ID tài nguyên 0x7f030065 là chìa khóa để hiểu các báo cáo lỗi này.

Tôi giả định rằng tài nguyên KHÔNG phải là tệp my_layout. Mặc dù my_layout được chỉ ra là dòng của vấn đề, nó rất có thể không phải là vấn đề gốc. Một cái gì đó bên trong tệp my_layout đề cập đến tài nguyên 0x7f030065. Các inflater bố trí thường không báo cáo các lỗi này rất rõ ràng.

Nếu không có phiên bản 0x7f030065 trong thư mục mặc định (ví dụ: drawable thay vì drawable-landscape), thì có lẽ 1% đang chạy trong cấu hình không thể tìm thấy nó đang quay trở lại mặc định-tồn tại. Điều này có thể xảy ra ngay cả khi ứng dụng của bạn bị khóa theo hướng ngang - ví dụ: thỉnh thoảng một bức vẽ dọc vẫn có thể xảy ra - ngay cả khi ứng dụng không hiển thị với người dùng cuối.

Luôn là cùng một id tài nguyên? Đó là một điều tốt để chú ý đến.

Theo kinh nghiệm của tôi, các vấn đề khác như hết bộ nhớ có thể gây ra những loại ngoại lệ thổi phồng. Nếu tài nguyên 0x7f030065 đề cập đến một lớp bố cục tùy chỉnh, thì bất kỳ điều gì xảy ra trong hàm tạo của lớp đó có thể dẫn đến Tài nguyên $ NotFoundException

1

Tôi đã trải nghiệm điều gì đó tương tự. Tôi đã có một hoạt động mà tôi muốn chỉ hiển thị trong cảnh quan - vì vậy trong AndroidManifest.xml tôi đã có android: screenOrientation = "landscape". So với bố cục thư mục và có tệp bố cục của tôi.

Thỉnh thoảng, ngẫu nhiên, tôi đã nhận được Tài nguyên $ NotFoundException khi hoạt động đang cố tải bố cục chính.

Tôi đã giải quyết nó bằng cách đổi tên bố cục của thư mục thành bố cục.

Nhưng tôi nghĩ chúng tôi đã gặp phải một số lỗi trong Android.

Các vấn đề liên quan