这是我的代码:
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()的情况下仅键入值,并且也不起作用。我试图在这里和谷歌寻求帮助,但我找不到任何有用的东西。有什么帮助吗?
答案 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());
});
}