2014-02-17 2 views
0

В моем Activity У меня есть 50 кнопок, и при нажатии каждой кнопки я хотел бы запустить тот же Activity.Динамически добавлять слушателей к кнопкам

Я хотел бы избежать установки слушателей и намерений для каждой кнопки. Есть ли уловка для этого?

Это слушатель я использую только для одного Button:

uno = (Button) findViewById(R.id.Button07); 
     uno.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

        Intent activityChangeIntent = new Intent(MainActivity.this, Interno.class); 

        MainActivity.this.startActivity(activityChangeIntent); 
       } 
      }); 
+0

Вы хотите, чтобы все 50 стреляли * точно таким же «намерением»? Если да, то почему? Если все они должны иметь разные данные/дополнения, это возможно, но я не вижу этого из вашего образца кода. – Geobits

ответ

1

Вы можете добавить

<Button 
... 
android:onClick="onClick" /> 

на макете XML, для каждой кнопки. И есть метод в классе

public void onClick(View v) 
{ 
} 
+0

Также возможно;) приятно! –

0
Button[] buttons = new Button[SIZE]; 
for(int i=0; i<some_value; i++) {  
    String buttonID = "btn" + i ; //THE ID OF YOUR BUTTON 
    int resID = getResources().getIdentifier(buttonID, "id", "com.sample.project"); //PLEASE CHANGE WITH YOUR PROJECT NAMESPACE 
    buttons[i] = ((Button) findViewById(resID)); 
    buttons[i].setOnClickListener(this);  
} 

Вы можете просто цикл по кнопкам, найти их по имени строки и добавить слушателя. Здесь кнопки сохраняются в массиве ...

0

На каждом объекте кнопки в XML-файле добавить свойство как это:

<Button android:onClick="clickMe" /> 

теперь добавить этот метод в Activity.java блок:

public void clickMe(View v){ 
    //TODO something 
} 

Хороший Удача.

Смежные вопросы