2011-02-17 3 views
1

음, 16 개의 버튼이 있습니다. 나는 그들을 onTouch 리스너에 추가하는 더 쉬운 방법을 찾고 싶다. 나는 안드로이드/자바를 처음 사용하므로 어떤 것이 작동 할 지 모르겠다. 바로 지금 내 코드가 있습니다.Android onTouchListener, 구현하기가 더 쉬운 방법

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main) 

.

Button btn_main1 = (Button) findViewById(R.id.cmd_main1); 
    Button btn_main2 = (Button) findViewById(R.id.cmd_main2); 
    Button btn_main3 = (Button) findViewById(R.id.cmd_main3); 
    Button btn_main4 = (Button) findViewById(R.id.cmd_main4); 
    Button btn_main5 = (Button) findViewById(R.id.cmd_main5); 
    Button btn_main6 = (Button) findViewById(R.id.cmd_main6); 
    Button btn_main7 = (Button) findViewById(R.id.cmd_main7); 
    Button btn_main8 = (Button) findViewById(R.id.cmd_main8); 
    Button btn_main9 = (Button) findViewById(R.id.cmd_main9); 
    Button btn_main10 = (Button) findViewById(R.id.cmd_main10); 
    Button btn_main11 = (Button) findViewById(R.id.cmd_main11); 
    Button btn_main12 = (Button) findViewById(R.id.cmd_main12); 
    Button btn_main13 = (Button) findViewById(R.id.cmd_main13); 
    Button btn_main14 = (Button) findViewById(R.id.cmd_main14); 
    Button btn_main15 = (Button) findViewById(R.id.cmd_main15); 
    Button btn_main16 = (Button) findViewById(R.id.cmd_main16); 


    btn_main1.setOnTouchListener(tListener1); 
    btn_main2.setOnTouchListener(tListener1); 
    btn_main3.setOnTouchListener(tListener1); 
    btn_main4.setOnTouchListener(tListener1); 
    btn_main5.setOnTouchListener(tListener1); 
    btn_main6.setOnTouchListener(tListener1); 
    btn_main7.setOnTouchListener(tListener1); 
    btn_main8.setOnTouchListener(tListener1); 
    btn_main9.setOnTouchListener(tListener1); 
    btn_main10.setOnTouchListener(tListener1); 
    btn_main11.setOnTouchListener(tListener1); 
    btn_main12.setOnTouchListener(tListener1); 
    btn_main13.setOnTouchListener(tListener1); 
    btn_main14.setOnTouchListener(tListener1); 
    btn_main15.setOnTouchListener(tListener1); 
    btn_main16.setOnTouchListener(tListener1); 
} 

은 물론, 그 그것을 할 끔찍한 방법입니다. 어떤 종류의 루프를 수행하거나 버튼을 배열이나 다른 것으로 넣는 방법이있을 것이라고 확신합니다. 이 문제를 줄이는 데 큰 도움이됩니다.

+0

당신이 항상 거기에 얼마나 많은 버튼을 컴파일 타임에 알 수 있습니까 :

<Button android:onClick="myClickHandler" /> 

과 활동

, 대응 방법을 추가? 그렇다면 자세한 정보를 줄이는 훌륭한 해결책이 있다고 생각합니다. – Mascarpone

답변

1

또 다른 방법은 XML 대신 코드를 사용하여 버튼을 추가하는 것입니다.

그러나 단지 그 코드를 정리하는

...
int[] buttonIds = new int[]{R.id.cmd_main1, R.id.cmd_main2}; // and so on 

for(int buttonId : buttonIds) { 
    Button b = (Button)findViewById(buttonId); 
    b.setOnTouchListener(tListener1); 
} 

는 또한, OnClickListener를 사용하면 버튼이 수행 할 작업에 따라, 아마 청소기입니다. 당신은 또한 XML에 OnClickListener를을 지정할 수 있습니다 :

class MyActivity extends Activity { 
public void myClickHandler(View target) { 
    // Do stuff 
    } 
} 
+0

코드가있는 단추를 만드는 것이 더 깔끔합니까? – Henzl0l

+0

@ Henzl0l 나는 그것이 당신이 만들고있는 것에 달려 있다고 생각합니다. 그들의 이름이 단지 숫자로 색인화된다는 사실은 그 사실을 나타냅니다. 또한, onClickListener를 선호 할 수도 있습니다 - 코드를 강조 표시하기 위해 또 다른 대답을 게시 할 것입니다. – Arve

+0

나는 터치를 이유로 사용하고 있는데, 터치 한 순간 반응하는 버튼이 필요합니다. 나는 여전히 안드로이드에 익숙하지 않기 때문에 더 좋은 방법이 있는지 확신 할 수 없다. – Henzl0l

관련 문제