2012-10-04 18 views
5

Hola tengo algo como esto (3 botones) en mi actividad xml señalando mismo método:paso de parámetros de un botón para Android: método onClick

<Button 
     android:id="@+id/Button_1" 
     android:onClick="printNo" 
     android:text="@string/Button_1" /> 
<Button 
     android:id="@+id/Button_2" 
     android:onClick="printNo" 
     android:text="@string/Button_2" /> 

<Button 
     android:id="@+id/Button_3" 
     android:onClick="printNo" 
     android:text="@string/Button_3" /> 

¿Hay alguna manera de que pudiera determinar que se pulsó el botón mientras estás en el método printNo?

+0

por qué está utilizando de esta manera .. también posibilita la llamada en el archivo java dinámicamente .. –

Respuesta

20
public void printNo(View v) { 
    switch (v.getId()) { 
    case (R.id.Button_1): 
     //stuff 
    break; 
    case (R.id.Button_2): 
     //stuff 
    break; 
    case (R.id.Button_3): 
     //stuff 
    break; 
} 
12

Simplemente cambiar el ID:

public void printNo(View v){ 
    switch (v.getId()){ 
    case R.id.Button_1: 
     break; 
    case R.id.Button_2: 
     break; 
    case R.id.Button_3: 
     break; 
} 
4

Trabajando en mi final

public void printNo(View v) { 

switch (v.getId()) { 

    case R.id.Button_1: 
    break; 

    case R.id.Button_2: 
    break; 

    case R.id.Button_3: 
    break; 
} 
0

En xml Añadir etiqueta, np con el nombre del botón.

public void printNo(View V){ 
    view.getTag(); 
    // now you can recognize view with getTag() 
} 

Otras respuestas parece también es bueno;)

11

Como @ user1106018 dicho - se puede utilizar tag en XML como esa:

<Button android:onClick="f" android:tag="0"/> 

entonces es muy simple para obtener esta etiqueta en este manera:

public void f(View v) { 
    String value = v.getTag(); 
} 
+0

Solo falta un molde, ya que getTag() devuelve un objeto, no una cadena – Maks

Cuestiones relacionadas