Событие нажатия кнопки не срабатывает во втором виде видоискателя - PullRequest
2 голосов
/ 18 июня 2010

У меня есть макет в формате xml, который, когда пользователь нажимает кнопку «Далее», которую я надуваю, заполняется данными следующего экрана, а также создает и устанавливает onclicklistener для кнопки изображения в новом представлении.Затем я добавляю это представление в мой основной ViewFlipper и вызываю showNext () для него.Вид сдвигается на место, и кнопка есть, но есть проблемы:

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

  2. Событие щелчка никогда не срабатывает.Серый квадрат меняет цвет для обозначения щелчка (не круглая часть, которая должна быть видна, и если бы она работала правильно, ее цвет изменился бы), но событие onClick в слушателе никогда не выполняется.

Это прекрасно работает, когда я делаю эту процедуру в первый раз (раздуваю, создаю onClickListener, добавляю в ViewFlipper - хотя в первый раз я явно не вызываю showNext).

Кто-нибудь видел что-нибудь подобное?Это сводит меня с ума

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Удаление входных / выходных анимаций из вашего ViewFlipper или альтернативных настроек:

android:fillAfter="false"
android:fillBefore="false"

в ваших анимациях входа / выхода решит проблему, и вы сможете использовать стандартный XML, определенный для прослушивателей onClick.

1 голос
/ 06 января 2011

Я только что провел последние четыре часа, выясняя это.Я думаю, что это всего лишь обходной путь, но он приводит меня к тому месту, где я могу получать нажатия кнопок для просмотра за пределами первого.
В вашем xml используйте -

android: onClick = "onClick"

Затем в своем коде используйте следующий формат для прослушивания событий ваших кнопок.

    public void onClick(View vw) 
     {
        switch (vw.getId()) 
       {
        case R.id.continue_button:
            if(verifyAllTasksCompleted()){
                currentPage++;
                updateView();
            }
            break;

Надеюсь, это вам поможет.Iris

...