2012-08-15 3 views
0

나는 스스로 안드로이드를 공부 중이며 이제는 단추를 사용하는 방법을 배우고 있습니다. 다음과 같이 작동하는 간단한 카운터를 만들었습니다. 다른 텍스트 필드에 문자열 (예 : 1 2 3)을 추가합니다. 그런 다음 나는 쌍으로 그들을 견제하고 싶다. (1은 2, 3은 1, 3은 2, 3은 3). 첫 번째 문자열 요소는 첫 번째 버튼에 쓰여지고 둘째는 두 번째 버튼에 쓰여지고 그 버튼 중 하나를 누르면 버튼의 태그가 변경되어야합니다 (1과 2가 있으면 1과 3 또는 2로 변경되어야하고 3 등) 및 문자열 요소 높은 순위를 가져옵니다. 모든 것이 잘 작동하는 것처럼 보이지만 버튼을 추가하면 큰 실수를 저지르고 있다고 생각합니다. 누구든지 나를 도울 수 있습니까? :) 코드 벨로우즈에서했던 것처럼 버튼 리스너를 추가 할 수 있습니까? :) 고맙습니다!for 루프 내의 두 버튼 OnClickListeners

답변

0

AndyRes는 다음과 같이 덧붙여 말합니다. 여러분의 메모리를 불필요하게 만드는 많은 불필요한 객체 인 많은 OnClickListeners (candidates..size() * candidates.size()) 숫자를 만듭니다. 당신이 button_one = (Button)findViewById(R.id.button_one);을 정의 직후

당신은 button_one.setOnClickListener(mListener);

당신이있을 수 있습니다 버튼의 금액을 제공 할 것입니다 단지 1 수신기를 가지고 그런 식으로 할 아마 OnCreate() 동안, ONE OnClickListener mListener = new View.OnClickListener etc... etc... 루프 지역 외의 만들어야합니다, 같은 청취자를 다시 세울 필요는 없습니다.

+0

그리고 OnClickListener mListener가 루프 안에 있거나 외부에 있어야합니까? – JuozasA

+0

바깥 쪽. OnClickListener mListener는 구현중인 클래스의 private 객체 여야합니다. 네가 자기 공부하고 있다고 했잖아. 그것은 당신이 객체 지향적이지 않은 배경에서 왔다고 나에게 약간 들린다. 그것이 맞다면 안드로이드로 들어가기 전에 객체 지향에 대한 정보를 얻으시기 바랍니다.클래스/객체/인스턴스 생성/등의 기본 내용 – Budius

+0

조언 해 주셔서 감사합니다. – JuozasA

0

일반적으로 이러한 버튼을 동적으로 생성하지 않는 한 루프에 클릭 리스너를 추가 할 필요가 없습니다.

동일한 버튼에 대한 루프에서 클릭 리스너를 설정하면 루프를 순환 할 때마다 아무 것도하지 않고 이전 설정을 덮어 쓰게되므로 이와 같은 작업을 수행 할 때 어떤 점도 보이지 않습니다.

+0

당신은 무엇을 할 것입니까? :) – JuozasA

+0

그것은 다릅니다. 당신이 코드에서 dinamicaly 버튼을 만들지 않는다면 클릭 리스너를 설정하기 위해 루프를 사용하는 것이 좋습니다. 그러나 예를 들어 XML 레이아웃에 2 개의 버튼이 있고 그 버튼에 대한 클릭 리스너를 설정하려는 경우 'Button myButton = (Buttom) findViewById (...);'버튼에 대한 참조를 얻은 직후에 클릭 수신기 'myButton.setOnClickListener (...);'를 설정하십시오. 루프 내부가 아닙니다. –

+0

리스너를 설정하고 루프 외부의 onclick() 메서드를 재정의하면됩니다. –

관련 문제