0

ここでフラグメントのチュートリアルに従っていますが、残念ながら、このチュートリアルではメニュー バーにアイコンを表示する方法が示されていません。

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);
    }
}

ここで何か不足していますか?タブにアイコンを設定する別の方法はありますか? すべてが表示され、適切にナビゲートされますが、空白のタブしかありません...

ありがとう!

4

1 に答える 1

1

タブにアイコンを設定することとどうOnCreateOptionsMenu関係があるのか​​ わかりません-「右クリック」または「長押し」メニューのためだけですか?

アイコンもある 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);

明らかに、これらの最後の 2 行は、ヘルパー メソッドを使用して 1 行に減らすことができます。

于 2013-08-27T16:05:45.910 に答える