2012-04-13 38 views
114


Trong bố cục của tôi, tôi đã xác định một cái gì đó như thế này.Cách lấy Tên tài nguyên từ id tài nguyên

<RadioButton 
android:id="@+id/radio1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Dnt want this text" /> 

Giả sử rằng một số hàm trong hoạt động trả về cho tôi id này (id của radioButton). Bây giờ tôi muốn nhận được văn bản này radio1 từ id này. Tóm lại, tôi muốn truy xuất văn bản radio1 được viết bằng android:id="@+id/radio1"

Ai đó có thể cho tôi biết làm cách nào có thể?

+0

nó một câu chuyện dài .. tôi cần phải dữ liệu dân cư thành một không lớn EditText từ một số dữ liệu nhận được từ máy chủ. Vì vậy, thay vì tự thiết lập dữ liệu cho tất cả các hộp văn bản, tôi đang viết một phương pháp mà điều này có thể làm việc cho tôi .. cho rằng tôi cần điều này. –

Trả lời

259

Trong hoạt động của bạn, hãy thử các:

  1. để có được chuỗi như radio1:

    getResources().getResourceEntryName(int resid); 
    
  2. để có được chuỗi như com.sample.app:id/radio1:

    getResources().getResourceName(int resid); 
    
+3

Cảm ơn bạn đã trả lời câu hỏi này, tôi đã bỏ ra một phần tốt hơn trong một giờ để giải quyết vấn đề này - trang web dev đã liên tục trỏ tôi đến getString() - điều này vô dụng đối với việc này. – Steve

+8

Bất kỳ ý tưởng nào khác biệt giữa 'getResourceEntryName (int resid)' và 'getResourceName (int resid)'? –

+9

@JoshPinter tham chiếu cho biết: ** getResourceEntryName: ** Trả lại tên mục nhập cho số nhận dạng tài nguyên đã cho ** getResourceName: ** Trả lại tên đầy đủ cho số nhận dạng tài nguyên đã cho. Tên này là một chuỗi duy nhất có dạng "gói: loại/mục nhập" Sự khác biệt có vẻ như trong gói * đã thêm: loại * cho ** getResourceName ** –

0

Bạn có nghĩa là bạn muốn lấy văn bản chuỗi của id?

Vì bạn đã xác định nó, bạn nên biết đây là gì.

Nếu bạn có bố cục và bạn muốn tìm xem Chế độ xem có id cụ thể hay không, bạn có thể duyệt toàn bộ bố cục và kiểm tra bằng getId(), nếu id của mỗi Chế độ xem là id bạn đang tìm kiếm ..

Hope this helps (nếu tôi đã hiểu đúng câu hỏi của bạn .. :))

+0

Không, bạn hoàn toàn sai. Tôi muốn truy xuất văn bản ** radio1 ** từ ** android: id = "@ + id/radio1" ** –

+0

Radio văn bản1 LÀ id của Chế độ xem của bạn. Nó không phải là một văn bản đơn giản mà bạn có thể nhận được, chia nhỏ, vv .. Để giúp bạn tốt hơn, bạn có thể cho chúng tôi biết chính xác bạn cần văn bản này không? –

+0

@DimitrisMakris: Đó là một câu chuyện dài .. tôi cần phải điền dữ liệu vào một số lượng lớn editText từ một số dữ liệu nhận được từ máy chủ. Vì vậy, thay vì tự thiết lập dữ liệu cho tất cả các hộp văn bản, tôi đang viết một phương pháp có thể làm việc này cho tôi .. cho rằng tôi cần này –

8

Bạn đã id ('dài' loại) từ id mà bạn muốn truy cập vào nút radio id (tên) đó là radio1. Bạn sử dụng số điện thoại

getResources().getResourceEntryName(id); 

khi sử dụng ở trên bạn có thể lấy tên nút radio tức là radio1. ở đây id thông số mà bạn có (loại dài). Hãy thử điều này nó sẽ giúp bạn 100%.

+1

Cảm ơn bạn. Rất vui khi ai đó thực sự trả lời câu hỏi thay vì thông thường "tại sao bạn cần câu trả lời đó [noob]". Có tên của phần tử trong khi tôi đang lặp qua chúng là không thể sửa lỗi được. Ý tôi là, thực sự, tôi sẽ tìm TextView với id 354814715 như thế nào? (nếu tôi không nhầm lẫn thậm chí không liên tục giữa các bộ sưu tập) - không chắc tại sao OP cần nó, nhưng tôi cần nó để xác minh chức năng mở rộng phông chữ của tôi đã thực sự lặp lại mặc dù tất cả các phần tử con. – Steve

0

Nếu là đúng những gì bạn muốn lấy ra là chữ "Radio1" (từ id riêng của mình?) Vì vậy nếu đó là trường hợp thì trước tiên bạn cần phải nhận được id của nó

int intname= buttonname.getId(); 

sau đó nhận được kết quả của nó

String stringname= get regetResources().getResourceEntryName(intname); 

hy vọng tôi đã giúp

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