2012-08-27 4 views
1

방금 ​​Android를 배우기 시작했으며 빠른 질문이 있습니다. 별도의 클래스 팀이 있고 그 안에 3 개의 변수 (문자열 이름, int 목표, int 포인트)가 있습니다. 내 주요 활동에서 버튼을 클릭하면 각 팀 객체의 목표 및/또는 점수를 증가시키고 싶습니다. 순간 나는 방법이 있습니다버튼 클릭시 매개 변수로 객체 전달

 public void updatePoints(View v, Team t){ 
     t.points++; 
     } 

을 내 xml 파일에서 내가 가진 :

버튼에 관련
android:onClick="updatePoints" 

. 위와 같은 Team 객체를 전달할 수 있습니까? 그렇다면 어떻게 할 수 있습니까? 내가 말했듯이 나는 안드로이드를 배우기 시작할 뿐이므로 어떤 충고라도 부탁드립니다.

건배

답변

1

에서 ....

android:onClick="updatePoints" // in XML file 

는 다음 자바 파일에서 당신은 정의해야 ...

public void updatePoints(View v){ 
    // This is where you update each team 

    // I think v.getId() retrieves the id of the button (or view) that was clicked 
} 

나는 귀하의 활동을 가정합니다 ...

팀 단원 []; // 팀 (자세한 하나 이상)이 팀을 식별하기 위해 뭔가를 할 필요가 있으므로, 귀하의 업데이트 할 ... 시도 그래서 팀

public class Team { 
    public int identity; // This is the new field 
    public String name; 
    public int goals; 
    public int points; 
} 

의 당신의 정의를 변경할 것의 배열 할 수 있지만, I 팀을 식별하기 위해 태그 속성을 사용하지 않을 것입니다. 개별 팀을 식별하기 위해 ID 필드를 사용합니다. 그런 식으로 팀이 연결되지 않았거나 버튼에 묶여 있지 않습니다 ...좀 더 다양한 IMHO

1

당신은 당신의 클래스 변수로 팀을 선언 할 수 있습니다 : 다음

private Team myTeam; 

, 당신의 방법을 만들 :

public void updatePoints(View v){ 
     myTeam.points++; 
} 

사용하여 클래스 변수를.

0

클릭 할 때 무언가를하기 위해 해당 버튼에 대한 이벤트 리스너를 생성해야합니다. 그런 다음 해당 Team 클래스의 객체를 만들어야합니다. 그런 다음 해당 클래스 내에서 updatePoints 메소드를 호출하면됩니다.

2

XML에 정의 된 온 클릭 리스너가

public void myMethod(View v) 

그렇지 않으면 찾을 수 없습니다해야합니다으로 사용되는 방법에 대한 서명.

그런 다음이 방법 내에서 원하는대로 수행 할 수 있습니다 (예 : updatePoints()). 팀과보기 간의 관계를 유지하려면 setTag()을 사용할 수 있습니다. 예를 들어

:

button.setTag("com.example.team", myTeam); 

다음의 onclick 방법이있는 경우

public void myMethod(View v) { 
    ((Team)v.getTag("com.example.team")).points++; 
} 
+0

지금까지 가장 좋은 답변입니다. –