Нативные вкладки на основе ActionBar с собственными фрагментами (с MvvmCross)

Я переношу Android-приложение на основе Xamarin для PCL и MvvmCross, чтобы мы могли ориентироваться на несколько платформ мобильных устройств.

Поскольку это бизнес-приложение, в котором мы можем указывать минимальную версию ОС Android, мы хотим избегать использования различных «библиотек поддержки» v4/v7 и т. д. Мы предпочитаем использовать все нативные компоненты, которые уже являются частью ОС. Таким образом, это в основном означает, что мы хотим ориентироваться только на Jellybean и, возможно, на Android версии 4.2 и выше.

К сожалению, несмотря на то, что существует множество примеров использования MvvmCross с ActionBarSherlock и SupportActionBar (в библиотеке поддержки), похоже, нет примеров того, как связать MvvmCross с родным ActionBar, используя родные Fragment в качестве вкладок.

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

Я обязательно напишу об этом в блоге, как только у меня будет работающее решение, которое принесет пользу всему сообществу MvvmCross/Xamarin.

Спасибо.


person nbevans    schedule 19.02.2014    source источник
comment
Я заметил, что существует относительно новое расширение для MvvmCross под названием FullFragging, которое, по-видимому, реализует необходимые части Mvx для поддержки собственных фрагментов (Ice Cream Sandwich и выше). Однако MvxTabsFragmentActivity, по-видимому, основан на устаревшем и устаревшем элементе управления TabHost. Странно, если я чего-то не понимаю. Возможно, тогда общее решение состоит в том, чтобы просто скопировать исходный код из него и реорганизовать его, чтобы вместо этого использовать собственный ActionBar?   -  person nbevans    schedule 19.02.2014
comment
Библиотеки SupportLibraries в основном предназначены для более ранних версий Android (хотя некоторые из них расширяют и более новые версии ОС). Сейчас на github есть довольно много полных примеров приложений. В качестве примера использования ActionBar попробуйте github.com/ Джеймсмонтемагно/MeetupManager/blob/master/   -  person Stuart    schedule 21.02.2014


Ответы (1)


Вероятно, самое главное — использовать MvvmCross — Hot Tuna Droid Полная поддержка фрагментов библиотеки NUGet. Затем создайте действие, наследуемое от MvxActivity, и фрагмент от MvxFragment.

ViewModel для фрагмента вкладки, установленного в действии при создании этого класса для метода TabEventArgs.FragmentTransaction.Add, используемого в обработчике событий ActionBar.Tab.TabSelected, например:

var tab1 = new TabFragment1 {DataContext = ViewModel};

В классе TabFragment1 вы можете использовать стандартный свободный метод привязки для bindingSet, созданного

var bindingSet = this.CreateBindingSet<TabFragment1, MyViewModel>();

Я не знаю, правильно ли это, но работайте.

person user1145840    schedule 18.07.2014