NavigationItemSelected не вызывается на панели навигации - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно добавить ящик для основной деятельности в моем приложении.Я просмотрел несколько руководств и добавил весь код, который показался мне необходимым, и ящик может открываться и закрываться очень хорошо.Однако я не могу выбрать ни один из пунктов.Когда я нажимаю на любой из них, ящик просто закрывается, и код, который должен был быть выполнен, никогда не запускается.

Это первые строки в моем файле MainActivity.cs:

public class MainActivity : AppCompatActivity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, Resource.String.navigation_drawer_open, Resource.String.navigation_drawer_close);
            drawer.AddDrawerListener(toggle);
            toggle.SyncState();

            NavigationView navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
            navigationView.NavigationItemSelected += NavigationView_NavigationViewSelected;

Исобытие NavigationView_NavigationViewSelected:

void NavigationView_NavigationViewSelected(object sender, NavigationView.NavigationItemSelectedEventArgs e)
        {
            switch (e.MenuItem.ItemId)
            {
                case (Resource.Id.nav_search):
                    Android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "SmartLyrics", "MainActivity.cs: Test for Search button on drawer");
                    break;
                case (Resource.Id.nav_saved):
                    Android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "SmartLyrics", "MainActivity.cs: Test for Saved button on drawer");
                    break;
                case (Resource.Id.nav_settings):
                    Android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "SmartLyrics", "MainActivity.cs: Test for Settings button on drawer");
                    break;
                case (Resource.Id.nav_about):
                    Android.Util.Log.WriteLine(Android.Util.LogPriority.Info, "SmartLyrics", "MainActivity.cs: Test for About button on drawer");
                    break;
            }
        }

Когда я нажимаю на опции, LogCat не показывает никаких сообщений внутри этого события.Есть ли здесь какой-нибудь код, который мне не хватает?

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Попробуй изменить свой xaml так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent">
  <android.support.v7.widget.Toolbar
       android:minWidth="25dp"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:minHeight="?attr/actionBarSize"
       android:id="@+id/toolbar" />
  <android.support.v4.widget.DrawerLayout
       android:id="@+id/drawer_layout"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
    <include
       layout="@layout/content_main"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />

   <android.support.design.widget.NavigationView
       android:id="@+id/nav_view"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:layout_gravity="start"
       android:fitsSystemWindows="true"
       app:headerLayout="@layout/nav_header_main"
       app:menu="@menu/activity_main_drawer"
    />

   </android.support.v4.widget.DrawerLayout>
</LinearLayout>
0 голосов
/ 14 июня 2019

Ваш MainActivity класс не реализует NavigationView.OnNavigationItemSelectedListener.

Вы MainActivity класс должны реализовать NavigationView.OnNavigationItemSelectedListener

...