将参数从按钮传递到android:onClick方法

时间:2012-10-04 12:29:52

标签: android eclipse eclipse-adt

嗨我在我的活动xml中有类似这样的东西(3个按钮)指向相同的方法:

 <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" />

有什么方法可以确定在printNo方法中按下了哪个按钮?

5 个答案:

答案 0 :(得分:24)

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;
}

答案 1 :(得分:13)

正如@ user1106018所说 - 你可以在xml中使用tag

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

然后以这种方式获取此标记非常简单:

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

答案 2 :(得分:12)

只需切换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;
}

答案 3 :(得分:4)

在我的最后工作

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 :(得分:0)

在xml add标签中,np,按钮名称。

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

其他答案似乎也很好;)