Почему не работает событие OnClick моей кнопки? - PullRequest
0 голосов
/ 18 мая 2010

У меня есть действие, в котором ListView содержит настроенные элементы линейного макета для каждой строки. В одной из строк есть кнопка, определенная как:

 <Button
            android:text="Pick a contact"
            android:id="@+id/btnPickContact"
            android:layout_width="wrap_content"
            android:gravity="center_vertical"
            android:layout_height="wrap_content"></Button>

Тогда в Java у меня есть этот код:

((Button) row.findViewById(R.id.btnPickContact)).setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                    intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID));
                    act.startActivityForResult(intent, PICK_CONTACT);
                }
            });

В этой настройке событие не запускается.

Также я попробовал реализовать интерфейс:

@Override
    public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID));
            startActivityForResult(intent, PICK_CONTACT);
    }

все равно не повезло, событие не сработало.

Что делать?

Ответы [ 5 ]

2 голосов
/ 18 мая 2010

В xml, определяющем кнопку, вам нужно указать обработчик, используя onclick = "somehandler". И в твоей деятельности есть

public someHandler(View v) {
}

v будет кнопкой.

0 голосов
/ 03 апреля 2012

Следует рассмотреть возможность установки свойства clickable и forcusable для макета строки.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
      //Inflate view ....

      button1.setOnClickListener(onclickListener);    
      convertView.setClickable(true);
      convertView.setFocusable(true);
      return converView;
}
0 голосов
/ 12 марта 2012

попробуйте это используйте это

 (new OnClickListener(){....

вместо этого

(new View.OnClickListener(){....

вот код ...

 ((Button) row.findViewById(R.id.btnPickContact)).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
                intent.putExtra(EXTRA_ONLINE_ID, (String)v.getTag(TAG_ONLINE_ID));
                act.startActivityForResult(intent, PICK_CONTACT);
            }
        });
0 голосов
/ 18 мая 2010

Вы уверены, что это событие не запускает и не является проблемой при запуске намерения?

добавьте log.d("Mytest","OnClick Fired!!!"); в качестве первой строки в onClick, а затем посмотрите, есть ли ваше сообщение в журнале отладки.

0 голосов
/ 18 мая 2010

Редактировать: я думаю, что это может ответить на ваш вопрос: Android: элементы ListView с несколькими нажимаемыми кнопками

...