Событие Android Button OnClick сработало после нескольких нажатий - PullRequest
2 голосов
/ 01 июля 2010

У меня есть пользовательская строка заголовка Android (1.5) с кнопкой.Используя пользовательскую строку заголовка в Деятельности A, я могу нажать кнопку и вызвать событие OnClickListener, как и ожидалось.

Однако, когда я запускаю действие B для результата из действия A, может потребоваться 2-3 щелчка для запуска события одного и того же кнопки.

Это код для установки прослушивателя события.для Действия A в onCreate переопределении

setTitleNegativeActionListener(new OnClickListener() {

public void onClick(View v) {
  // end this activity
  ActivityA.this.finish();
  }
});

Это код для Действия B

setTitleNegativeActionListener(new OnClickListener() {

  public void onClick(View v) {
    setResult(RESULT_CANCELED);
    EditClientAddressActivity.this.finish();
  }
});

Кнопка XML из макета

<Button 
  android:id="@+id/title_button_right" 
  android:layout_width="wrap_content" android:layout_height="wrap_content" 
  android:background="@drawable/nav_button"
  android:text="Done" android:textColor="#fff"
  android:layout_alignParentRight="true" android:textSize="12dip"
  android:textStyle="bold" android:paddingLeft="10dip"
  android:paddingRight="10dip" android:layout_centerVertical="true"
  android:minWidth="40dip" 
  android:focusableInTouchMode="false" android:focusable="false" />

Кажется, чтохотя в упражнении B первый щелчок приводит к фокусировке кнопки, а второй щелчок - к нажатию кнопки.Тем не менее, я установил как focusableInTouchMode, так и focusable как ложные в определении кнопок.

Есть ли какое-либо другое свойство, которое необходимо определить, чтобы в этом случае сработало событие OnClickListener?

EDIT : После более подробного изучения я обнаружилчто дочернее действие B запускалось дважды (или более), и каждое нажатие кнопки действительно работало должным образом, но казалось, что ничего не происходит.Полный ответ ниже.

1 Ответ

1 голос
/ 02 июля 2010

Код, запускаемый дочерним действием, реагирует на событие onTouch, которое было сгенерировано для ACTION_UP и ACTION_DOWN. Это может привести к тому, что действие будет запущено несколько раз.

...