0

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

我的想法是为每个按钮创建一个方法,如下所示:

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

但是没有用,而且我重复了几行很多次,这不是很好。那么如何使用开关,或者任何想法有一个单一的方法并将其全部android:onClick""用于按钮。

因此,如果您有任何想法,只需解释一下或写一个示例即可。提前致谢。

4

2 回答 2

0

那么使用switch呢,

是的,您可以在方法中使用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
}

vButton单击的,因此您可以获取其 ID 并进行比较。

任何想法都有一个单一的方法并将其放在所有 android:onClick"" 按钮上。

在您的 xml 中为每个Button添加该行

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

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

于 2013-10-18T13:46:44.610 回答
0

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

@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();
     }
}   

并将此视图注入onCreate您的Activityor Fragment

@Override 
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main_activity);
     Views.inject(this);
}

有关其他示例,请参阅此站点

于 2013-10-18T14:01:20.153 回答