Android: Как установить слушатель, который срабатывает, когда мой ViewFlipper показывает нового ребенка - PullRequest
2 голосов
/ 20 апреля 2010

У меня есть ViewFlipper, для которого я хочу, чтобы слушатель срабатывал при изменении отображаемого дочернего элемента. Я установил OnFocusChangeListener для ViewFlipper, но он никогда не срабатывает, когда я переключаюсь с дочернего 0 на дочерний 1 или наоборот. ViewFlipper содержит два RelativeLayouts, и я попытался установить OnFocusChangeListeners для них, но я получаю ClassCastException, когда я пытаюсь установить его. Вот мой код:

RelativeLayout songsLayout = (RelativeLayout) findViewById(R.id.song_page_layout);
songsLayout.setOnFocusChangeListener(new OnFocusChangeListener() {
    public void onFocusChange(View view, boolean hasFocus) {
        showPopUp("View " + view.getId() + " now has focus: " + hasFocus);
    }       
} );

R.is.song_page_layout - это один из моих RelativeLayouts, а showPopUp () - это функция, которую я использую для отображения всплывающих окон.

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

1 Ответ

3 голосов
/ 20 апреля 2010

Я думаю, вы не понимаете, что означает «фокус» на Android; это когда пользователь выбирает этот вид, например, когда он выбирает текст EditText, нажимая на него, или он использует клавиатуру для выбора кнопки. Когда ViewFlipper переключает виды, он не получает и не теряет фокус.

Насколько я знаю, вы можете:

  1. Не используйте автоматическое переключение ViewFlipper, вместо этого вручную вызывайте showNext (), когда вы хотите, чтобы он перевернулся (затем установите интервал самостоятельно в коде).

  2. Подкласс или переопределение ViewFlipper и добавление прослушивателя изменений по своему вкусу.

...