Android fragments 未为MvxTabsFragmentActivity调用OnCreateOptions菜单

Android fragments 未为MvxTabsFragmentActivity调用OnCreateOptions菜单,android-fragments,xamarin.android,mvvmcross,Android Fragments,Xamarin.android,Mvvmcross,我将继续学习片段教程,但不幸的是,本教程没有显示如何将图标放入菜单栏 我假设我可以在OnCreateOptionsMenu方法中使用一个MenuInflater,但当我在那里进行调试时,我的代码似乎从未被命中 以下是目前的情况: public class MainView : MvxTabsFragmentActivity { public MainViewModel MainViewModel { get { return (MainViewModel)bas

我将继续学习片段教程,但不幸的是,本教程没有显示如何将图标放入菜单栏

我假设我可以在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);
    }
}
public类主视图:MvxTabsFragmentActivity
{
公共主视图模型主视图模型
{
获取{return(MainViewModel)base.ViewModel;}
}
公共主视图()
:base(Resource.Layout.Main、Resource.Id.realtabcontent)
{
}
公共覆盖布尔onCreateOptions菜单(IMenu菜单){
MenuInflater.充气(Resource.Menu.main,Menu);
返回true;
}
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
RequestWindowFeature(WindowFeatures.NoTitle);
base.OnCreate(savedInstanceState);
}
受保护的覆盖无效添加选项卡(绑定参数)
{
AddTab(“主页”、“参数”、“MainViewModel.home”);
AddTab(“profile”,args,MainViewModel.StartOrder);
AddTab(“目录”,“参数”,MainViewModel.catalog);
AddTab(“签出”、“参数”、“MainViewModel.checkout”);
AddTab(“历史记录”,“参数”,MainViewModel.OrderHistory);
}
}
我是不是遗漏了什么?是否有其他方法设置选项卡上的图标?一切显示和导航正常,我只是有空白标签


谢谢

我不确定创建选项菜单上的
与设置选项卡上的图标有什么关系-好吧,这只是“右键单击”或“按住”菜单

如果您想使用一个具有图标的TabScript,也可以考虑使用另一个<代码> AdtAdab> /Cord>OrdRead,允许您通过完整的<代码> 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);
    }
//这是您当前正在使用的呼叫
受保护的void AddTab(string tagAndSpecName、string tabName、Bundle args、,
IMvxViewModel(视图模型)
{
var tabSpec=this.\u tabHost.NewTabSpec(tagAndSpecName).SetIndicator(tabName);
AddTab(args、viewModel、tabSpec);
}
//这是你可以用的电话
受保护的void AddTab(Bundle args、IMvxViewModel viewModel、TabHost.TabSpec TabSpec)
{
var tabInfo=new tabInfo(tabSpec.Tag、typeof(tframent)、args、viewModel);
AddTab(此、\u tabHost、tabSpec、tabInfo);
_lookup.Add(tabInfo.Tag,tabInfo);
}
e、 g

var tabHost=(tabHost)FindViewById(Android.Resource.Id.tabHost);
var tabSpec=this.tabHost.NewTabSpec(“home”).SetIndicator(“home”,Resource.Id.MyHomeIcon);
AddTab(args,MainViewModel.Home,tabSpec);

虽然很明显,最后两行可以通过helper方法缩减为一行。

嘿,斯图尔特!感谢图标现在显示,如果我在文本发送空字符串!我使用的是MenuInflater,就像文档中显示的那样。
        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);