Cách lấy Tên tài nguyên từ id tài nguyên


114


Trong bố cục của tôi, tôi đã xác định một cái gì đó như thế này.

<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. 13 apr. 122012-04-13 08:53:14

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. 05 sep. 122012-09-05 12:03:51

+8

Bất kỳ ý tưởng nào khác biệt giữa 'getResourceEntryName (int resid)' và 'getResourceName (int resid)'? 22 jan. 142014-01-22 17:10:48

+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 ** 22 mar. 142014-03-22 01:26:29

  0

@Shubhayu - bạn có thể làm như thế nào trong máy pha cà phê espresso kiểm tra? Hàm getResources() dường như không có sẵn! 05 oct. 162016-10-05 17:07:07


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" ** 13 apr. 122012-04-13 08:50:01

  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? 13 apr. 122012-04-13 08:52:58

  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 13 apr. 122012-04-13 08:53:55

  0

Vì vậy, nếu bạn có một phản ứng của 10 ví dụ dây mà bạn muốn cư 10 radiobuttons, tôi nghĩ rằng một giải pháp có thể là tự động tạo ra các radio này và đặt giá trị của chúng. Một cách tiếp cận khác có thể là sử dụng một ListView với radiobuttons như các mục danh sách, nếu ofcourse này phù hợp với nhu cầu của bạn về cách bố trí. 13 apr. 122012-04-13 08:57:23

  0

Cảm ơn bạn đã kính trọng. Nhưng u đã nhận nó tất cả sai tôi có 10 editBox và tôi nhận được như chuỗi json với giá trị được điền vào trong 10 editbox sau khi chuỗi này là parserd nó được chuyển đổi thành HashMap. Bây giờ thay vì tự ánh xạ từng giá trị (tương ứng với khóa của hashmap) đến văn bản editText .. tôi đang viết một phương thức có thể làm việc này cho tôi. 13 apr. 122012-04-13 09:03:43

  0

Hãy cho tôi biết nếu u có bất kỳ giải pháp tốt để làm điều này. 13 apr. 122012-04-13 09:06:26


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. 05 sep. 122012-09-05 12:01:23


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