간단한 메모리 게임을 만들고 싶습니다. 16 버튼을 사용했습니다. 특정 버튼을 눌렀을 때 반응하는 방법을 알고 있지만 각 버튼을 클릭하고 일치 버튼 이 선택되었는지 (지금은 필요하지 않음)으로 선택하면 어떻게 반응합니까? XML로2 버튼을 클릭하면 안드로이드가 반응합니다.
답변
는, 당신은 위의 XML의 onClick
속성에 같은 이름을 정의한 각 Button
<Button
android:id="@+id/btn1"
...
android:onClick="btnClick"/>
<Button
android:id="@+id/btn2"
...
android:onClick="btnClick"/>
을 위해 그리고 당신의 자바 코드에 onClick
의 기능이 공개되어 있는지 확인 동일한 이름을 사용 유일한 매개 변수는 View
입니다. 제안대로 View
이 될 것입니다 Button
당신이 그 id
그에 switch
을 얻을 if/else
를 사용하거나
public void btnClick(View v)
{
switch(v.getId()) // v is the btn that was clicked so this will give you its id
{
case (R.id.btn1): btn1 was clicked
... do stuff
첫 번째 질문에 대답하기 것을 처리하는 그러나, 당신이 플래그를 사용할 수 있습니다 그래서 클릭 이전 또는 카운터 및 카운터가 == 2라고 말하면 원하는대로 클릭합니다. 그 다음 당신이 Button
이 두 번째 클릭에 비교 무엇을 나타내는 값을 저장하지 않을 경우
다른 방법은 for loop
에서 그들을 설정하는 것입니다, 당신이 그렇게 loop
을 나는 것입니다 설정하는 방법을 알고 있다고 가정 당신은 내가 프로그램을 만들 수 있었다 논리를 사용 OnClickListener()
감사합니다. 각 단추를 이와 같이 얻으면 : (16 단추) \t 단추 [1] = (단추) findViewById (R.id.button1_mg); 사례 (v == button [i])를 요청할 수 있습니까? – user1932595
코드에서 각'Button '을 인스턴스화하려면 다른 메소드를 사용하고 동일한 onClickListener()를 사용하십시오. 내가 보여준 첫 번째 방법은 그 중 하나를 할 필요가 없어 유지 – codeMagic
그래서 나는 다른 질문이 있습니다. 나는 나의 기억력 게임에 이것을 요구했다. 버튼의 단어는 * tun time *의 배열에서 임의로 선택됩니다. 각 단추를 인스턴스화하지 않는 방법이 있습니까? – user1932595
구현이 짧은
for (int i=0; i<buttons.size(); i++)
{
...
button[i].setOnClickListener(ActivityName.this);
}
@Override
public void onClick(View v)
{
int id = v.getId();
}
이 있는지 확인하십시오 유지하지만, 매우 긴합니다. 각 버튼의 경우는 동일한 기능을 수행한다 :
Button B1;
int x,y; //give them values and compare (example: B1=1, B2=2, B3=1 .. B1&B3 the same picture)
int turn = 1; //to know whos turn (x or y), default start on x
int numberOfClicks=0; //when 2 buttons clicked, check
//in the OnCreate()
B1 = (Button) findViewById(R.id.b1); //assume B1's value = 1
B1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) { //------------------------------------ OnClick Starts here
if (turn==1){
//use x
x=1;
turn=2; //flip the turn
numberOfButtons++; //one is clicked so far
}else{
//use y
y=1;
turn=1;
numberOfButtons++;
}
if(numberOfButtons==2){
//check
if(x==y){
//same
numberOfButtons=0; //restart counter
}else{
//not the same
numberOfButtons=0; //restart counter
}
}//end of OnClick
}); //end of button OnClickListener
B2 = 7 다음의 OnClick에서, X 및 Y = 7 각각의 OnClick 가질 것이다하는 경우는 서로 다른 X 및 Y 값.
이것은 'onClickListener()'사용의 문제를 해결하지 않습니다. – codeMagic
- 1. 렌더링 방법은 2 번만 반응합니다.
- 2. 버튼으로 페이지 넘김/뒤집기 클릭하면 안드로이드가 클릭
- 3. 버튼을 클릭하면 화요일에
- 4. 버튼을 클릭하면 배열이 null이됩니까?
- 5. 버튼을 클릭하면 dispatch_time_t가 중지됩니다.
- 6. 버튼을 클릭하면 이벤트가 실행됩니다.
- 7. 버튼을 클릭하면 exe_bad_action이됩니다.
- 8. # 버튼을 클릭하면 텍스트가 표시됩니다.
- 9. 버튼을 클릭하면 계산기가 중지되었습니다
- 10. 버튼을 클릭하면 오디오가 재생되고 다른 버튼을 클릭하면 새로운 오디오가 재생됩니다.
- 11. 버튼을 클릭하면 HTML이로드됩니다. GWT
- 12. 입력 버튼을 클릭하면, 액션
- 13. 버튼을 클릭하면 팝업이 생성됩니다.
- 14. 버튼을 클릭하면 배경색이 변경됩니다.
- 15. 버튼을 클릭하면 번호가 저장됩니다.
- 16. 버튼을 클릭하면 EpandableListView가 펼쳐집니다.
- 17. 클릭하면 플래시에서 버튼을 숨기려고합니다.
- 18. 버튼을 클릭하면 변형됩니다. as3
- 19. 버튼을 클릭하면 새로운보기가 렌더링됩니다.
- 20. 버튼을 클릭하면 화면이 변경됩니다.
- 21. 탐색 버튼을 클릭하면 외부
- 22. 버튼을 클릭하면 쿠키가 재설정됩니다.
- 23. 제출 버튼을 클릭하면 어떻게됩니까
- 24. 버튼을 클릭하면 어떻게 제거하나요?
- 25. 버튼을 클릭하면 충돌이 발생합니다.
- 26. 버튼을 클릭하면 모양이 사라집니다.
- 27. 카운터 버튼을 클릭하면 +1
- 28. 버튼을 클릭하면 PopupWindow가 표시됩니까?
- 29. 버튼을 클릭하면 내용을 슬라이드합니다.
- 30. 버튼을 클릭하면 이미지가 회전합니다.
당신은 이것을 위해 플래그를 사용하여 마지막 값과 새로운 값을 기억할 수 있습니다. – Noundla
감사합니다. 좋은 생각입니다. 그리고 16 개 대신에 1 개의 onclike 만 할 수있는 방법이 있습니까? – user1932595
은 각 버튼의 XML에서'onClick = "functionName"을 설정하거나 동일한 리스너 button1.setOnClickListener (this)에 할당합니다. 첫 번째 방법이 더 좋습니다 IMHO – codeMagic