Преобразование нескольких действий в один фрагмент

Недавно я решил обновить свое приложение, чтобы оно поддерживало новую функцию фрагментов в сотах 3.0. Мое приложение в настоящее время работает в представлении списка, которое открывает различные действия в зависимости от того, какой элемент списка щелкнут. Используя адаптацию кода из этого руководства, я создал приложение, состоящее из только из двух действий, но в зависимости от того, какой элемент списка щелкнут, второе действие «просмотрщика» запускается с использованием другого макета xml.

К сожалению, я не смог понять, как вызывать старые методы, обладающие всей функциональностью. Должен ли я импортировать все свои старые действия, а затем вызывать методы в действие средства просмотра (мне может понадобиться совет о том, как именно это сделать), или я должен просто поместить все методы непосредственно в одно и то же действие средства просмотра (пожалуйста, учитывайте размер эти методы (которых, кстати, очень много)).

Как только все будет работать с двумя действиями заранее, будет довольно простой задачей «фрагментировать» приложение, как показано здесь Хотя я не думал, что может быть способ разрешить нескольким фрагментам занимать одно и то же место в действии (если это так, пожалуйста, дайте мне знать, как это делается)

Спасибо


person Jack    schedule 11.04.2011    source источник


Ответы (2)


Как указал Джеймс, вам придется переместить бизнес-логику из вашей деятельности в ваши фрагменты. Для обработки событий вы можете создать интерфейс прослушивателя. Действие CONTAINER будет реализовывать этот интерфейс. Поскольку фрагменты имеют доступ к активности контейнера, вы сможете делегировать активности контейнера «логику» для желаемых событий. Для этих событий действие будет решать, запускать ли новое действие, показывать/скрывать новые фрагменты или что-то еще.

У меня был аналогичный вопрос, посмотрите на вопрос и ответ: здесь

Хотя я не думал, что может быть способ разрешить нескольким фрагментам занимать одно и то же место в действии (если это так, то, пожалуйста, дайте мне знать, как это делается)

Я думаю, что можно позволить нескольким фрагментам занимать одно и то же место в действии. Опять же, посмотрите на ответ здесь ... Я думаю, что концепция/область действия действия немного изменилась, и теперь действие может содержать разные фрагменты, каждый из которых позволит пользователю делать одну целенаправленную вещь.

person Axel M. Garcia    schedule 21.04.2011

Я не уверен, что вы подразумеваете под «вызовом старых методов, обладающих всеми функциями». Вы захотите переписать все свои классы активности как фрагменты. Ознакомьтесь с этим руководством (оно очень краткое ). По сути, вам понадобится активность, состоящая из ListFragment и FrameLayout. Ваш ListFragment обновит FrameLayout, изменив его на соответствующий фрагмент в зависимости от того, какая строка была выбрана.

person James    schedule 11.04.2011
comment
Что я имел в виду под сохранением функциональности, так это то, что мои старые действия имели onClickHandlers, поэтому при нажатии кнопки происходил расчет. ATM Мне удалось отобразить макеты, но у меня возникли проблемы с повторной реализацией ClickHandlers. Мне было интересно, знаете ли вы хороший способ сделать это. - person Jack; 13.04.2011
comment
Можете ли вы более конкретно рассказать о возникшей у вас проблеме? - person James; 13.04.2011