2012-01-26 3 views
6

나는 버튼의 격자를 만들고, 예를 들어, 그것들을 식별하기 위해 그들에게 태그를 제공합니다 : 이것은 잘 작동findViewWithTag의 검색 버튼이 작동하지 않습니까? 내 클래스의에서 onCreate() 메소드에서

button.setTag("one four"); 

. 지금은 방법 내에서 새 임시 버튼을 만들고 싶어, 나는이 코드를 사용하고 있습니다 :

String s = "one four"; 
Object o = s; 
View view = new View(this); 
Button button = (Button)view.findViewWithTag(o); 

그러나 버튼은 항상 "널 (null)"로 나온다. 왜 그런지 모르겠습니다.

+0

음,보기에 해당 태그가있는 버튼을 추가해야합니다. – Cata

답변

8

당신은 view.findViewWithTag(o);

이전 view.addChild(button);를 호출해야합니다 그리고 당신은이 Object o = s;, view.findViewWithTag(s);이 같은 행동을 할 것 할 필요 없어요.

View view = new View(this); - View의 새 인스턴스를 만듭니다. 개체 view에는 자식이 없습니다. Button 오브젝트가 들어있는 레이아웃에서 findViewWithTag(s) 메소드를 호출해야합니다.

+0

다음과 같이하십시오. button knop = view.addChild (Button) view.findViewWithTag (o); ? – Mavix

+0

번호. button.setTag (s); view.addChild (button); 버튼 버튼 = (버튼) view.findViewWithTag (s); – Natali

+0

이렇게하면 오류가 발생합니다. 단추를 변수로 확인할 수 없습니다. 단추와보기를 모두 가져 왔습니다. – Mavix

1

문자열을 개체 변수에 할당하지 않고 태그를 직접 문자열로 설정해보십시오.

0

Mavix, findViewWithTag는 모든 하위 뷰를 통과하며 ViewGroup에서 정상적으로 작동합니다. 이것을 시도하십시오 :

// after button.setTag("one four"); 

ViewGroup v = (ViewGroup) findViewById(R.id.myFirstLayoutIdInXmlLayoutFile); 
Button b = (Button) v.findViewWithTag("one four"); 
0

나는 동일한 의혹이있었습니다. 내 상황에서는 Main Layout과 Secondary Layout (Main 내부)이 있는데, 두 가지는 RelativeLayout의 것이고, 화면에 추가 한 구성 요소를 가져 오려고합니다.

그러나 동적 키 (반복 될 수 있음)를 사용해야하고 구성 요소를 식별하는 데 사용할 수있는 고유 한 매개 변수였습니다.

Natali처럼 그녀의 response에서 구성 요소에 "태그"를 사용하고 나를 위해 일했습니다. 아래 (버튼을 예로 사용)를 참조하십시오.

1 단계 : 버튼 유형 변수를 선언하십시오. Button btn = new Button(this); // 이것은 내 활동의 컨텍스트입니다

2 단계 : 아무 키나 설정하십시오. String any_key = "keyToGetButton";

3 단계 : 태그 (2 단계에서 설정 한 키)를 단추에 설정하십시오. btn.setTag(any_key);

4 단계 : 버튼을 다른 방법으로 사용하십시오. Button button = (Button) your_layout_where_is_button.findViewWithTag(any_key);

관련 문제