如何为具有类似功能的所有按钮使用单个方法

时间:2013-10-18 13:39:39

标签: java android onclick

我正在通过eclipse和Java为Android制作一个基本计算器。任务是有两个值,如输入和结果。因此,当按下第一个数字时,它会保存它,然后按下加号或减号,然后按下结果的第二个值。

我的想法是为每个按钮创建一个类似这样的方法:

public void number1(View view){
    value1 = value2;
    value2 = 1;
    displayValue();
}

但是没有用,而且我多次重复几行并不好。那么使用switch或任何想法如何使用单一方法并将其放在所有android:onClick""按钮上呢。

所以如果你有任何想法只是解释它或写一个例子。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

  

那么使用开关呢,

是的,您可以在方法中使用switch语句,然后启用id点击的Button。像

这样的东西
public void someMethod(View v)
{
     switch (v.getId())     // get the id of the View clicked
     {
        case R.id.idOfButton1:     // and compare it to your Button ids
             // do stuff;
             break;
        case R.id.idOfButton2:
             // do stuff;
             break;
      }
      // put common code before or after switch statement
}

此处v点击了Button,因此您可以获取其ID并进行比较。

  

任何想法都有一个单一的方法,并把它放在所有的android:onClick“”按钮。

在每个Button的xml中添加该行

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

The Button Docs解释这是如何工作的以及与这样做相关的规则,但相当简单。

答案 1 :(得分:0)

我真的建议你在这种情况下使用ButterKnife作为最佳做法。您所要做的就是对请求的ID使用@OnClick注释。

@OnClick({ R.id.door1, R.id.door2, R.id.door3 })
public void pickDoor(DoorView door) {
     if (door.hasPrizeBehind()) {
        Toast.makeText(this, "You win!", LENGTH_SHORT).show();
     } else {
        Toast.makeText(this, "Try again", LENGTH_SHORT).show();
     }
}   

并在onCreateActivity的{​​{1}}处注入此观看次数。

Fragment

有关其他示例,请参阅此site