2

Я пишу приложение для монодроида, используя Xamarin и MvvmCross.MvvmCross + ActionBar для приложения Monodroid

Я хочу использовать MvvmCross и ActionBar в своем приложении. ActionBar (Legacy или Sherlock) заставил меня унаследовать их обычную деятельность. В этом случае я не мог наследовать свою активность как из MvxActivity, так и из CustomBarActivity.

Как показать панель действий с MvxActivity?

+0

возможно дубликат [ActionBarSherlock с последней MVVMCross] (Http: // StackOverflow. com/questions/16801728/actionbarsherlock-with-latest-mvvmcross) – Stuart

+0

@stuart, Нет Не дублировать - actionbarsherlock и панель действий различны – Tim

ответ

0

Что я сделал, чтобы внедрить ActionBar в Mvx-подобном моду, я создал свойство в своей TabActivity, чтобы я мог получить доступ к моей ViewModel. В моем ViewModel у меня есть список элементов панели действий, которые я могу перечислять и создавать. Я уверен, что есть больше MvvMcross, как способы внедрить панель действий (спросите stuart), но это работает очень хорошо для меня. Не забывайте, чтобы ваша деятельность наследовалась от TabActivity.

недвижимости:

protected MvvMAppiAppi.Core.ViewModels.NavigationBarViewModel NavigationBarViewModel { 
      get{ return base.ViewModel as MvvMAppiAppi.Core.ViewModels.NavigationBarViewModel; } 
     } 

Код:

 protected override void OnCreate (Bundle bundle) 
       { 
        base.OnCreate (bundle); 
        SetContentView (Resource.Layout.view_NavigationBar); 

        //TabHost.TabSpec spec; 
        Intent intent; 

        foreach (var item in NavigationBarViewModel.MenuTabs) { 
         switch (item.PresentationMode) { 
          case "listByCategory": 
         { 
          var vm = NavigationBarViewModel.ListPresentationViewModel; 
          vm.CategorieId = item.id; 
          intent = this.CreateIntentFor (vm); 
         } 
          break; 
        ... 
        ... 
        ... 
        ... 
       } 
    intent.AddFlags (ActivityFlags.NewTask); 
    setUpTab (intent, item.Name, ResourceManager.I.getResId (item.ResourceName)); 

    } 

Функция для создания вкладок:

private void setUpTab (Intent view, string tag, int Resource) 
     { 
      View tabview = createTabView (this.TabHost.Context, tag, Resource); 
      TabHost.TabSpec spec = this.TabHost.NewTabSpec (tag).SetIndicator (tabview).SetContent (view); 

      this.TabHost.AddTab (spec); 
     } 

     private View createTabView (Context context, String text, int resource) 
     { 
      View view = LayoutInflater.From (context).Inflate (Resource.Layout.tabs_bg, null); 
      TextView tv = view.FindViewById<TextView> (Resource.Id.tabsText); 
      ImageView iv = view.FindViewById<ImageView> (Resource.Id.image); 
      iv.SetImageResource (resource); 
      tv.SetText (text, TextView.BufferType.Normal); 
      return view; 
     } 
Смежные вопросы