我创建了一个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无法找到该视图。 虽然,没有使用数组和循环,下面的代码确实有效:
ImageView bblock1=(ImageView)layout.findViewById(R.id.bblock1);
bbblock1.setOnClickListener(ActivityCheck);
任何想法为什么数组不会工作,但标准代码会?
答案 0 :(得分:3)
将i==myResources.length
更改为i < myResources.length
。
除非0 == myResources.length
。
(整个事件监听器的事情虽然很诱人。)
答案 1 :(得分:2)
除了循环问题之外,您的监听器仅适用于R.id.block 1,它将忽略所有其他视图的事件。你究竟想要实现什么目标?
答案 2 :(得分:0)
for(int i = 0; i==myResources.length; i++) {
bblock[i]=(ImageView)layout.findViewById(myResources[i]);
bblock[i].setOnClickListener(
new View.OnClickListener(){
public void onClick (View v){
if( write u r checking condition here ){
start u r suitable activity here.
}
);
}