2013-08-27 30 views
0

我沿着教程的片段here,但不幸的是,本教程不顯示如何讓圖標進入菜單欄。OnCreateOptionsMenu沒有調用MvxTabsFragmentActivity

我認爲我可以在OnCreateOptionsMenu方法中使用MenuInflater,但是當我在那裏進行調試時,我的代碼從未出現過命中。

這裏是什麼樣子目前:

public class MainView : MvxTabsFragmentActivity 
{ 

    public MainViewModel MainViewModel 
    { 
     get { return (MainViewModel)base.ViewModel; } 
    } 

    public MainView() 
     : base(Resource.Layout.Main, Resource.Id.realtabcontent) 
    { 

    } 

    public override bool OnCreateOptionsMenu(IMenu menu) { 
     MenuInflater.Inflate (Resource.Menu.main, menu); 
     return true; 
    } 

    protected override void OnCreate (Bundle savedInstanceState) 
    { 
     RequestWindowFeature(WindowFeatures.NoTitle); 
     base.OnCreate (savedInstanceState); 
    } 

    protected override void AddTabs(Bundle args) 
    { 
     AddTab<HomeView>("home", "", args, MainViewModel.Home); 
     AddTab<ProfileView>("profile", "", args, MainViewModel.StartOrder); 
     AddTab<CatalogView>("catalog", "", args, MainViewModel.Catalog); 
     AddTab<CheckoutView>("checkout", "", args, MainViewModel.Checkout); 
     AddTab<OrderHistoryView>("history", "", args, MainViewModel.OrderHistory); 
    } 
} 

我失去了一些東西在這裏?有沒有不同的方式來設置選項卡上的圖標?一切都顯示並正確導航,我只是有空白標籤...

謝謝!

回答

1

我不確定OnCreateOptionsMenu與設置選項卡上的圖標有關 - afaik僅用於「右鍵單擊」或「按住」菜單?

如果你想使用則tabspec其中也有一個圖標,或許可以考慮使用其他AddTab覆蓋,它允許你在一個完整的TabSpec

// this is the call you are currently using 
    protected void AddTab<TFragment>(string tagAndSpecName, string tabName, Bundle args, 
            IMvxViewModel viewModel) 
    { 
     var tabSpec = this._tabHost.NewTabSpec(tagAndSpecName).SetIndicator(tabName); 
     AddTab<TFragment>(args, viewModel, tabSpec); 
    } 

    // this is the call you could use instead 
    protected void AddTab<TFragment>(Bundle args, IMvxViewModel viewModel, TabHost.TabSpec tabSpec) 
    { 
     var tabInfo = new TabInfo(tabSpec.Tag, typeof (TFragment), args, viewModel); 
     AddTab(this, _tabHost, tabSpec, tabInfo); 
     _lookup.Add(tabInfo.Tag, tabInfo); 
    } 

例如通過

 var tabHost = (TabHost) FindViewById(Android.Resource.Id.TabHost); 

     var tabSpec = this.tabHost.NewTabSpec("home").SetIndicator("Home", Resource.Id.MyHomeIcon); 
     AddTab<HomeView>(args, MainViewModel.Home, tabSpec); 

雖然顯然那些最後兩行可以用輔助方法縮減爲1。

+0

嘿斯圖爾特!感謝現在的圖標,如果我發送空文本的文本!我正在使用MenuInflater,就像它們在[ActionBar](http://developer.android.com/guide/topics/ui/actionbar.html#ActionItems)文檔中顯示的一樣。 – PkL728

相關問題