Нативни раздели, базирани на ActionBar, с нативни фрагменти (с MvvmCross)

Пренасям базирано на Xamarin приложение за Android, за да бъде PCL'ified и MvvmCross'ified, така че да можем да насочваме към множество платформи за мобилни устройства.

Тъй като това е бизнес приложение, където можем да диктуваме минималната версия на Android OS, искаме да избягваме използването на различните v4 / v7 и т.н. „Поддържащи библиотеки“. Предпочитаме да използваме всички собствени компоненти, които вече са част от операционната система. Така че това на практика означава, че искаме да се насочим само към Jellybean и вероятно Android v4.2 нагоре.

За съжаление, въпреки че има много примери за използване на MvvmCross с ActionBarSherlock и SupportActionBar (в библиотека за поддръжка), изглежда няма примери за това как да свържете MvvmCross с родния ActionBar, използвайки родния Fragments като раздели.

Не очаквам някой да публикува части от код, но наистина ще съм благодарен, ако някой може да ми даде няколко насоки за най-добрия подход, който да предприема, за да постигна това.

Със сигурност ще направя блог за това, след като имам работещо решение, което да е от полза за цялата общност на 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
Библиотеките за поддръжка са там главно за по-ранни версии на android (въпреки че някои разширяват и по-нови версии на OS). Вече има доста пълни мостри на приложения в github. За един пример за използване на ActionBar, опитайте github.com/ jamesmontemagno/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