Как я должен структурировать свое приложение?

введите здесь описание изображения

Мое приложение для Android в настоящее время использует TabActivity с четырьмя вкладками. Я также использую сторонний навигационный ящик, который обеспечивает более простой способ навигации по этим четырем вкладкам. Я знаю, зачем навигационный ящик, когда у нас есть вкладки, верно? Это то, что хотела моя организация. В настоящее время приложение также не поддерживает планшеты.

Пришло время переделать наше приложение с нуля. На этот раз нам нужно добавить поддержку планшетов. Я смотрел на новый навигационный ящик, предоставленный Google и фрагментами. Поскольку TabActivity устарела, мы больше не хотим ее использовать, и Google предлагает вместо этого использовать фрагмент. Инструмент, который предоставляет Google, такой как навигационный ящик и фрагменты, является действительно мощным инструментом, но мне трудно структурировать свое приложение.

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

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

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

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

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

В этот момент я теряюсь, что делать. Любое предложение будет принята с благодарностью.


person fallen    schedule 25.09.2013    source источник


Ответы (1)


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

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

person Ryan S    schedule 25.09.2013
comment
Итак, у меня должно быть 1 действие, которое удерживает как навигационный ящик слева, так и справа, и я должен постоянно заменять один фрагмент в зависимости от того, хочу ли я фрагмент списка или фрагмент подробностей. Когда фрагмент детали виден, я должен показать правый навигационный ящик, иначе я должен это сделать. Это то, что вы предлагаете? Если да, то как бы вы порекомендовали управлять приложением для планшета? Я вижу, как фрагменты будут полезны, но сейчас так сложно все визуализировать. - person fallen; 26.09.2013
comment
Это правильно, хотя я рекомендую использовать какой-либо тип библиотеки для использования навигационных ящиков, поскольку это позволит более просто переключать, какие из них должны быть активными. Что касается совместимости с планшетом, постарайтесь не думать о том, как адаптировать приложение для планшета, вместо этого переделайте свой пользовательский интерфейс, как если бы не было телефонного интерфейса. Затем выясните, какие части макета телефона вы можете использовать повторно, и используйте их как фрагменты. - person Ryan S; 26.09.2013