Я создал For Loop, который устанавливает каждый ImageView ID и ClickListener. Когда щелчок нажат, OnClickListner либо не может найти идентификатор, либо вообще не вызывается.
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);
Любые идеи, почему массив не работает, но стандартный код будет?
Измените i==myResources.length
на i < myResources.length
.
Текущий цикл немедленно выйдет, если 0 == myResources.length
.
(Все прослушиватели событий были приятным приманкой, хотя.)
Помимо проблемы с циклом, ваш Listener будет работать только для R.id.block1, он будет egnore событий для всех других видов. Что именно вы пытаетесь достичь?
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.
}
);
}