Android: как получить идентификатор макета внутри флиппера? - PullRequest
0 голосов
/ 15 февраля 2011

Ответ: используйте viewFlipper.getCurrentView (). GetId ()

Привет, я застрял в положении, когда мне нужно выполнить набор операторов на основе экрана, которыйотображается (необходимо использовать условие ЕСЛИ).Папка макета содержит только один экран (например, main.xml).Но внутри main.xml есть три абсолютных макета (01,02 и 03).Я использую flipper для пролистывания этих экранов.

Раньше, когда я переключался между двумя экранами (main.xml и main2.xml), у меня не было проблем.Я использовал две кнопки для переключения между экранами и использовал флаг внутри каждой кнопки и использовал один и тот же флаг в моем условии IF для выполнения кода.Теперь, когда я реализовал flipper, я не могу использовать флаг.Поэтому я подумал об использовании LAYOUT ID в условии IF.Но мне нужно знать , как проверить идентификатор макета в кодировке Java .Кто-нибудь может мне помочь?

Например:

if(findViewById(R.id.AbsoluteLayout01)==true)
{
execute
}
else if(findViewById(R.id.AbsoluteLayout02)==true)
{
execute #2
}

(Приведенный выше код выдает ошибку «Несовместимые типы и типы представления операндов»)

Итак, я попытался

if(findViewById()==v1) //v1 is the object for AbsoluteLayout01
{
execute
}
else if(findViewById()==v2) //v2 is the object for AbsoluteLayout02
{
execute #2
}

(Приведенный выше код выдает ошибку «Метод findViewById (int) в типе Activity не применимо для arguments ()»)

Ответы [ 4 ]

3 голосов
/ 15 февраля 2011

Проще всего, вы можете просто позвонить ViewFlipper.getDisplayedChild() и просто сравнить на основе индекса (0, 1, 2). Если это абсолютно необходимо для сравнения по идентификатору, вы также можете сделать:

ViewFlipper vf = //whatever assignment
switch(vf.getCurrentView().getId()) {
    case R.id.AbsoluteLayout1:
        //do work
}
2 голосов
/ 15 февраля 2011

Использование == не будет работать между представлениями, если вы не перегружаете оператор == ....

Попробуйте вместо этого .equals ().

if(findViewById(R.id.AbsoluteLayout01).equals(v1))

, где v1 - представление.

0 голосов
/ 15 февраля 2011

Возможно, слушатель, подключенный к флипперу, может сказать вам, что вам нужно знать?

Ссылка - Сенсорная прокрутка на View Flipper в Android?

0 голосов
/ 15 февраля 2011

В вашем первом блоке кода вы можете попробовать

if (findViewById(R.id.absoluteLayout01) != null) {
    ....
}

as findViewById либо возвращает представление, если оно его находит, либо возвращает null.

Что касается того, как найти идентификатор макета, вы только что попробовали R.layout. (...)? Это сработало бы, если бы все они были отдельными файлами XML, так как он возвращает уникальный номер для всего файла, а не группу просмотра внутри файла.

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