我想将几个按钮的ID放到一个数组中,然后在条件为

时间:2016-04-18 21:09:50

标签: android xml

这是我的代码:

XML

<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="8"
    android:id="@+id/button8"
    android:layout_alignTop="@+id/button7"
    android:layout_toRightOf="@+id/button7"
    android:layout_toEndOf="@+id/button7" />

你可以看到我有按钮(它将是一个计算器),带有文字(1-9)和id =按钮1-9

在MainActivity中我创建了一个数组:

private int[] numbers = {
        R.id.button0,
        R.id.button1,
        R.id.button2,
        R.id.button3,
        R.id.button4,
        R.id.button5,
        R.id.button6,
        R.id.button7,
        R.id.button8,
        R.id.button9,
};

现在我想只在点击那些ID按钮时才进行特定操作。例如:

 public void onClick(View value) {
     if (Arrays.asList(numbers).contains(value.getId())) {
            Button button = (Button) value;
            textField.append(button.getText());

但它不起作用。我假设Arrays.asList(数字).contains(value.getId())是个问题。试图在没有getId()的情况下仅键入值,并且也不起作用。我试图在这里和谷歌寻求帮助,但我找不到任何有用的东西。有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

Arrays.asList不会在原始变量(如int)上返回布尔值。请改用ArrayUtils.contains(array,key)

public void onClick(View value) {
    if (ArrayUtils.contains(numbers, value.getId()) {
        ...
    }
}

答案 1 :(得分:-1)

如果您只输入.contains(value),那么这显然不会有效,因为您搜索包含int的{​​{1}}的数组列表View。 您遇到的问题是value.getID()不返回R.id.XXX。

我建议你只需在每个按钮上添加一个OnClickListener并将其打包成for循环。像:

for(every button){
 button.setOnClickListener(new OnClickListener(){
  textField.append(button.getText());
 });
}