2011-12-30 72 views
14

Hi tôi đang làm việc với cử chỉ và tôi cần phải nhập khẩu nhưng im nhận được lỗiCác com.android.internal.R nhập khẩu không thể được giải quyết

com.android.internal.R; 

Các com.android.internal.R nhập khẩu không thể được giải quyết

vui lòng giúp tôi, vui lòng

+0

Làm thế nào mà các lỗi vực dậy? Bạn có thay đổi bất kỳ thứ gì trong quá trình thiết lập dự án hoặc thêm tệp mới theo cách thủ công không? Nếu có, hãy cố gắng làm sạch dự án và xây dựng lại nó. – Ahmed

Trả lời

3

Trước hết, Cử chỉ là gì? Bạn có gói có tên com.android.internal trong thư mục gen của mình không? Doest nó chứa R.java? Nếu không, hãy thử Project-> Clean in Eclipse. Nếu nó vẫn không hoạt động, bạn có thể gặp lỗi trong tệp bố cục XML của mình.

36

Bạn không nói lý do bạn cần quyền truy cập vào com.android.internal.R, nhưng thực tế đáng buồn là bạn không thể nhập nó ("nội bộ" là đầu mối không phải là một phần của API công khai). Google không tiết lộ điều này vì nó có thể thay đổi.

Có thể truy cập các tài nguyên nội bộ bằng cách gọi Resources.getSystem(). Để có được giá trị của một định danh tài nguyên đặc biệt, bạn phải biết tên của nó và sau đó sử dụng mã như sau để tìm giá trị:

Resources res = Resources.getSystem(); 
int id = res.getIdentifier("resource name", "resource type", "android"); 

Hãy nhận biết rằng bất kỳ tên mà bạn sử dụng có thể biến mất trong các phiên bản tương lai của Android .

+0

Cảm ơn bạn đã phản hồi! Làm thế nào tôi có thể nhận được tài nguyên id mặt hàng này? '' ' ' '' – nAkhmedov

+0

@nAkhmedov - Câu hỏi của bạn không rõ ràng. Những gì bạn đã hiển thị là định nghĩa tài nguyên 'id', mà bạn có thể tham chiếu dưới dạng' R.id.switch_widget' trong mã. Có điều gì khác bạn có trong tâm trí? –

5

Tôi có một vài gợi ý:

1) Đảm bảo bạn không có bất kỳ lỗi nào khác ngoài lỗi liên quan đến R. Nhấn chuột phải vào thư mục dự án của bạn trong Eclipse, Android Tools -> Fix Project Properties.

2) Kiểm tra để đảm bảo bạn đã nhập đúng R. Đôi khi Android.R mặc định có thể được nhập.

4

Có, bạn có thể sử dụng R nội bộ với một số thủ thuật bẩn (lừa bẩn = phản xạ Java).

Chỉ cần một ví dụ:

Class clasz = Class.forName("com.android.internal.R$styleable") 
Field field = clasz.getDeclaredField("TextAppearance"); 
field.setAccessible(true); 
int[] textAppearanceStyleArr = (int[])field.get(null); 

field = clasz.getDeclaredField("TextAppearance_textSize"); 
field.setAccessible(true); 
int textSizeStyle = (Integer)field.get(null); 
+0

Truy cập các API nội bộ thông qua phản ánh không được hỗ trợ và có thể không hoạt động trên tất cả các thiết bị hoặc trong tương lai! –

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