【问题标题】:Xamarin navigation drawer menu items click event not handlingXamarin 导航抽屉菜单项单击事件未处理
【发布时间】:2017-06-24 12:11:24
【问题描述】:

我有一个导航抽屉包含几个菜单项。我正在尝试实现菜单项单击事件,但单击事件根本没有注册。

这是我的抽屉:

   drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            // Create ActionBarDrawerToggle button and add it to the toolbar  
            var toolbar = FindViewById<V7Toolbar>(Resource.Id.toolbar);
           // toolbar.InflateMenu(Resource.Menu.top_menus);
            SetSupportActionBar(toolbar);


            var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.drawer_open, Resource.String.drawer_close);
            drawerLayout.SetDrawerListener(drawerToggle);
            drawerToggle.SyncState();
            navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
            setupDrawerContent(navigationView); 

这是setupDrawerContent 代码:_

void setupDrawerContent(NavigationView navigationView)
    {
        navigationView.NavigationItemSelected += (sender, e) =>
        {
            e.MenuItem.SetChecked(true);
            drawerLayout.CloseDrawers();
        };
    }`

这是OnCreateOptionsMenu 代码:

  public override bool OnCreateOptionsMenu(IMenu menu)
    {
        navigationView.InflateMenu(Resource.Menu.nav_menu); //Navigation Drawer Layout Menu Creation  
      //MenuInflater.Inflate(Resource.Menu.nav_menu, menu);
        return base.OnCreateOptionsMenu(menu);
        //return true;
    }

这是OnOptionsItemSelected 代码:

  public override bool OnOptionsItemSelected(IMenuItem item)
    {

        switch (item.ItemId)
        {

            case Resource.Id.nav_sangli:

                return true;
            case Resource.Id.nav_solapur:


                return true;


            default:
                break;
        }

        return base.OnOptionsItemSelected(item);

    }

问题是调试器甚至没有点击OnOptionsItemSelected

我尝试过 xamarin 论坛,但没有任何效果。 TIA

【问题讨论】:

    标签: c# xamarin xamarin.ios xamarin.android xamarin.forms


    【解决方案1】:

    你使用了错误的构造函数ActionBarDrawerToggle https://developer.android.com/reference/android/support/v7/app/ActionBarDrawerToggle.html

    你正在使用这个:

    ActionBarDrawerToggle (Activity activity, 
                    DrawerLayout drawerLayout, 
                    Toolbar toolbar, 
                    int openDrawerContentDescRes, 
                    int closeDrawerContentDescRes)
    

    尝试使用这个:

    ActionBarDrawerToggle (Activity activity, 
                    DrawerLayout drawerLayout, 
                    int openDrawerContentDescRes, 
                    int closeDrawerContentDescRes)
    

    所以像这样定义抽屉:

     var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, Resource.String.drawer_open, Resource.String.drawer_close);
    

    并像这样设置你的工具栏:

    SetSupportActionBar(toolbar);  
    

    通常会触发该事件

    更新: 不要忘记添加:

    navigationView.NavigationItemSelected += NavigationView_NavigationItemSelected; 
    

    这是抽屉参数: 改造这一行:

    var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,Resource.String.drawer_open, Resource.String.drawer_close);
    

    到:

    `var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, Resource.String.drawer_open, Resource.String.drawer_close);`
    

    【讨论】:

    • 使用上面的代码,点击事件也没有触发,因为您删除了工具栏参数,所以我从操作栏中丢失了抽屉切换按钮。来自 ActionBarDrawerToggle。
    • 你设置了 SetSupportActionBar(toolbar); ?
    • 我给你找了个教程:c-sharpcorner.com/article/…
    • 试试看,或者对比你的代码,也许对你有帮助
    • 那么问题出在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多