2012-10-04 10 views
5

Witam mam coś takiego (3 przyciski) w mojej działalności xml wskazując na tej samej metody:Przekazywanie parametru od guzika do Android: metoda 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" /> 

Czy jest jakiś sposób mogę określić, który został naciśnięty przycisk podczas gdy w metodzie printNo?

+0

dlaczego używasz w ten sposób .. Można również dynamicznie wywoływać plik java .. –

Odpowiedz

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

Wystarczy przełączyć 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

Praca w moim końca

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

w XML dodać znacznik, NP z nazwą przycisku.

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

Inne odpowiedzi wydaje się również dobry;)

11

Jako @ user1106018 powiedział - można użyć tag w XML tak:

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

to jest bardzo proste, aby uzyskać ten tag w tym sposób:

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

Po prostu brakuje rzutu, ponieważ getTag() zwraca obiekt, a nie ciąg – Maks

Powiązane problemy