Android: слушатель на элементах массива - PullRequest
1 голос
/ 31 января 2012

Я создал цикл For, который устанавливает для каждого ImageView идентификатор и 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);

Есть идеи, почему массив не будет работать, но стандартный код будет работать?

Ответы [ 3 ]

3 голосов
/ 31 января 2012

Изменить i==myResources.length на i < myResources.length.

Токовая петля выйдет немедленно, если только 0 == myResources.length.

(Вся эта штука для прослушивания событий была хорошей приманкой.)

2 голосов
/ 31 января 2012

Помимо проблемы с циклом, ваш Listener будет работать только для R.id.block1, он будет игнорировать события для всех других представлений.Что именно вы пытаетесь достичь?

0 голосов
/ 31 января 2012
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.                 
                }
                             );

                      } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...