int数组中的元素未找到(虽然它应该)

问题描述:

我没有得到正确的索引。谁能告诉我为什么?我期望0作为索引,而不是-1。int数组中的元素未找到(虽然它应该)

int[] id = {R.id.buKeyPadNum1, ...} **(EDIT)** 
int index = Arrays.asList(id).indexOf(v.getId()); 

Log.i("onClick", "v.getId "+ String.valueOf(v.getId())+" ButtonId "+String.valueOf(id[0]) 
+" Index "+String.valueOf(index)); 

logcat的: 8月9日至二十五日:11:32.039:I /的onClick(1680):v.getId 2131296337 ButtonId 2131296337索引-1

+0

索引'-1'表示它不存在。 'v.getId()'的值在你的数组中不存在 – Baby 2014-09-25 08:26:43

+0

'id.equals(v.getId())'似乎更有意义 – epoch 2014-09-25 08:28:01

+0

-1意味着它是空的并且它不存在。 – 2014-09-25 08:29:34

Arrays.asList(id)返回List<long[]>indexOf()仅适用于Long[]对象。见this answer

尝试使用Long[]类型为id

+1

是“int [] id = {R.id.buKeyPadNum1,...}”必须是“Integer [] id = {}” – user2462619 2014-09-25 08:49:59

考虑这样的代码:

int ix = Arrays.asList(new int[]{1,2}).indexOf(1); 
// result: -1 

int ix = Arrays.asList(new Integer[]{1,2}).indexOf(1); 
// result: 0 (found) 

可能你的数组包含了与indexOf参数不同类型的元素。