我创建了一个 For 循环,它为每个 ImageView 设置一个 ID 和一个 ClickListener。当点击被按下时,OnClickListner 似乎无法找到 ID,或者根本没有被调用。
public int[] myResources = {R.id.bblock1, R.id.bblock2, R.id.bblock3, R.id.bblock4, R.id.bblock5, R.id.bblock6, R.id.bblock7, R.id.bblock8};
ImageView[] bblock = new ImageView[7];
for(int i = 0; i==myResources.length; i++) {
bblock[i]=(ImageView)layout.findViewById(myResources[i]);
bblock[i].setOnClickListener(ActivityCheck);
}
View.OnClickListener ActivityCheck = new View.OnClickListener(){
public void onClick (View v){
if( v.getId() == (R.id.bblock1)){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/#!/itz_jonno"));
startActivity(browserIntent);
}
^^ OnClickListener 无法找到 View 。 虽然,在不使用数组和循环的情况下,下面的代码确实有效:
ImageView bblock1=(ImageView)layout.findViewById(R.id.bblock1);
bbblock1.setOnClickListener(ActivityCheck);
知道为什么数组不能工作,但标准代码可以吗?
最佳答案
更改 i==myResources.length
进入i < myResources.length
.
当前循环将立即退出,除非0 == myResources.length
.
(虽然整个事件监听器是一个很好的诱饵。)
关于Android:数组项上的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9075318/