C# NavigationView SetCheckedItem不会触发OnNavigationItemSelected
我想在应用程序启动时在导航抽屉中选择一个特定项目。 我添加了C# NavigationView SetCheckedItem不会触发OnNavigationItemSelected,c#,android,xamarin.android,C#,Android,Xamarin.android,我想在应用程序启动时在导航抽屉中选择一个特定项目。 我添加了navigationView.SetCheckedItem(Resource.Id.nav_gallery) protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_main
navigationView.SetCheckedItem(Resource.Id.nav_gallery)
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_main);
Android.Support.V7.Widget.Toolbar toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
FloatingActionButton fab = FindViewById<FloatingActionButton>(Resource.Id.fab);
fab.Click += FabOnClick;
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();
var navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
navigationView.SetNavigationItemSelectedListener(this);
navigationView.SetCheckedItem(Resource.Id.nav_gallery);
}
如果我单击导航项目OnNavigationItemSelected
,则会调用导航项目,并且一切正常。
选择默认项的正确方法是什么
更新
我加上这一行就解决了。单击特定项
navigationView.Menu.PerformIdentifierAction(Resource.Id.nav_gallery, 0);
您可以创建一个函数
public void selectDrawerItem(int position, String tag) {
switch (position) {
case 0:
fragment = new DashboardFragment();
tvToolbarTitleLand.setText("Dashboard");
break;
//code.................
}
if (fragment != null) {
FragmentTransaction transaction = manager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right);
transaction.replace(R.id.flMainContainer, fragment);
transaction.addToBackStack(tag);
transaction.commit();
}
navigationView.getMenu().getItem(position).setChecked(true);
}
如果您对此有任何疑问,请告诉我
您可以创建一个函数
public void selectDrawerItem(int position, String tag) {
switch (position) {
case 0:
fragment = new DashboardFragment();
tvToolbarTitleLand.setText("Dashboard");
break;
//code.................
}
if (fragment != null) {
FragmentTransaction transaction = manager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_right);
transaction.replace(R.id.flMainContainer, fragment);
transaction.addToBackStack(tag);
transaction.commit();
}
navigationView.getMenu().getItem(position).setChecked(true);
}
如果您对此有任何疑问,请告诉我 以编程方式选择该项
//在启动时设置仪表板
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, new DashboardFragment());
fragmentTransaction.commit();
setNavDrawer();
}
//CREATE A NavDrawer() void
private void set NavDrawer(){
toolbar = (toolbar) findViewById(r.i.d.toolbar);
setsupportactionbar(toolbar);
navigationView.setNavigationItemSelected(memuItem)
{
if (menuItems.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
drawerlayout.closeDrawers();
//now checlk which items are being clicked
//并采取适当行动
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.home:
DashboardFragment dashboardFragment = new DashboardFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, dashboardFragment,"DASHBOARD_FRAGMENT");
fragmentTransaction.commit();
return true;
以编程方式选择该项
//在启动时设置仪表板
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, new DashboardFragment());
fragmentTransaction.commit();
setNavDrawer();
}
//CREATE A NavDrawer() void
private void set NavDrawer(){
toolbar = (toolbar) findViewById(r.i.d.toolbar);
setsupportactionbar(toolbar);
navigationView.setNavigationItemSelected(memuItem)
{
if (menuItems.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
drawerlayout.closeDrawers();
//now checlk which items are being clicked
//并采取适当行动
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.home:
DashboardFragment dashboardFragment = new DashboardFragment();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, dashboardFragment,"DASHBOARD_FRAGMENT");
fragmentTransaction.commit();
return true;