자원 ID에서 자원 이름을 얻는 방법


158


내 레이아웃에서 나는 이와 같은 것을 정의했다.

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

활동의 일부 함수 가이 id (radioButton의 ID)를 반환한다고 가정하십시오. 이제이 ID 에서이 텍스트 radio1 을 가져 오려고 합니다. 간단히 말해서 나는 작성된 radio1 텍스트를 검색하고 싶습니다 .android:id="@+id/radio1"

누군가가 어떻게 가능한지 말해 줄 수 있습니까?


오랜 이야기입니다. 서버에서 수신 한 일부 데이터에서 많은 수의 editText에 데이터를 채워야합니다. 따라서 모든 텍스트 상자에 수동으로 데이터를 설정하는 대신이 작업을 수행 할 수있는 방법을 작성하고 있습니다.
Code_Life

답변:


363

활동에서 다음을 시도하십시오.

  1. 다음과 같은 문자열을 얻으려면 radio1:

    getResources().getResourceEntryName(int resid);
  2. 다음과 같은 문자열을 얻으려면 com.sample.app:id/radio1:

    getResources().getResourceName(int resid);

코 틀린에서 지금 :

val name = v.context.resources.getResourceEntryName(v.id)

4
이것에 대답 해 주셔서 감사합니다.이 문제를 인터넷 검색하는 데 더 많은 시간을 보냈습니다. 개발 사이트는 계속 getString ()을 가리 켰습니다.
Steve

8
차이가 사이에 어떤 생각 getResourceEntryName(int resid)getResourceName(int resid)?
Joshua Pinter

10
참조가 말한다 @JoshPinter : getResourceEntryName : 반환 주어진 자원 식별자에 대한 항목 이름 getResourceName : 반환 주어진 자원 식별자의 전체 이름입니다. 이 이름은 형태의 단일 문자열 "패키지 : 타입 / 항목"의 차이는 추가 된 것 같다 패키지 유형을 위한 getResourceName
Jose_GD

@Shubhayu-에스프레소 테스트에서 어떻게 할 수 있습니까? getResources () 함수를 사용할 수없는 것 같습니다!
1ak31sha

minifyEnabled true특히 Proguard ( ) 를 사용하는 경우에는 사용하지 않는 것이 좋습니다getResources().getIdentifier(...
user25

9

당신은이 ID ( '긴'타입) 액세스 라디오 버튼에 당신이 원하는 ID와 ID (이름) 입니다 radio1을 . 당신은 이것을 사용합니다

getResources().getResourceEntryName(id);

위에서 사용하면 라디오 버튼의 이름, 즉 radio1을 얻을 수 있습니다. here 매개 변수 id는 (long type) 입니다. 이것을 시도하면 100 % 도움이 될 것입니다.


2
감사합니다. 누군가가 일반적인 "왜 그런지 [noob]"응답 대신에 실제로 질문에 대답 한 것이 기쁘다. 반복하는 동안 요소 이름을 갖는 것은 디버깅에 사용할 수 없습니다. 정말로 ID가 354814715 인 TextView를 어떻게 찾을 수 있습니까? (실수하지 않으면 컴파일간에 일정하지 않은 경우도 있음)-OP가 왜 필요한지 확실하지 않지만 모든 하위 요소를 통해 글꼴 크기 조정 기능이 실제로 반복되는지 확인해야합니다.
Steve


1

내가 옳다면, 검색하고자하는 것은 "radio1"(id 자체에서)입니까? 그렇다면 먼저 ID를 가져와야합니다.

int intname= buttonname.getId();

그런 다음 결과를 얻으십시오

String stringname= getResources().getResourceEntryName(intname);

내가 도와줬으면 좋겠다


-1

당신은 당신이 ID의 문자열 텍스트를 가져 가고 싶다는 것을 의미합니까?

정의 했으므로 이것이 무엇인지 알아야합니다.

레이아웃이 있고보기에 특정 ID가 있는지 확인하려는 경우 각 레이아웃의 ID를 찾고자하는 ID 인 경우 전체 레이아웃을 탐색하고 getId ()로 확인할 수 있습니다.

이것이 도움이되기를 바랍니다 (귀하의 질문을 올바르게 이해하면 .. :))


아니, 너 다 알았어. android : id = "@ + id / radio1" 에서 텍스트 radio1 을 검색하고 싶습니다
Code_Life

텍스트 radio1은 View의 ID입니다. 그것은 당신이 얻고, 나누는 등의 간단한 텍스트가 아닙니다. 당신을 더 잘 돕기 위해,이 텍스트가 정확히 무엇을 필요로하는지 알려줄 수 있습니까?
Dimitris Makris

@ DimitrisMakris : 긴 이야기.. 서버에서 수신 한 일부 데이터에서 많은 수의 editText에 데이터를 채워야합니다. 그래서 그 대신 수동으로 모든 텍스트 상자에 데이터를 설정하는, 내가 방법을 쓰고 그 수 내가이 필요하다고이 나를 위해 일 ..
Code_Life

따라서 10 개의 라디오 버튼을 채우려는 문자열과 같이 10 개의 응답이있는 경우 해결책은 이러한 라디오 버튼을 동적으로 만들고 값을 설정하는 것입니다. 다른 방법은 라디오 버튼이 목록 항목으로 포함 된 ListView를 사용하는 것입니다.
Dimitris Makris

respose 주셔서 감사합니다. 하지만 U가 잘못되었습니다 .10 editBox가 있고이 문자열이 파서 된 후에이 10 editbox에 채워질 값이있는 json 문자열로 수신됩니다 .HashMap으로 변환됩니다. 이제 대신 수동으로 각 값 (해시 맵의 키에 해당)을 editText 텍스트에 매핑하십시오.이 작업을 수행 할 수있는 방법을 작성하고 있습니다.
Code_Life
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.