Xamarin Android中Toolbar返回按钮点击无响应问题求助
我来帮你排查下Toolbar返回箭头点击没反应的问题,结合你的代码来看,大概率是几个常见的配置遗漏导致的,咱们一步步来检查:
首先确认Toolbar是否已关联为Activity的ActionBar
很多时候大家会忘记这关键一步——如果只是找到Toolbar控件但没把它设置为当前Activity的ActionBar,导航箭头的点击事件可能无法被系统正确识别触发。你需要在初始化Toolbar的代码后加上这两行:SetSupportActionBar(toolbar); SupportActionBar.SetDisplayHomeAsUpEnabled(true);这样既让Toolbar具备ActionBar的特性,也显式启用了返回箭头的显示。当然你依然可以保留自己绑定的
NavigationClick事件,只要Toolbar正确关联后,事件就能正常响应了。检查事件绑定的时机是否正确
确保你是在OnCreate方法里执行完SetContentView(Resource.Layout.你的布局名)之后,才去查找Toolbar并绑定NavigationClick事件的。如果在布局还没加载完成时就调用FindViewById,会获取到null对象,自然绑定不了任何事件。确认导航图标是否正确设置
有时候布局里的Toolbar没有指定导航图标,或者图标不可见,导致你点击的区域根本不是可交互的按钮。你可以在布局文件里给Toolbar添加属性:app:navigationIcon="@drawable/你的返回箭头图标"或者在代码里动态设置:
toolbar.SetNavigationIcon(Resource.Drawable.你的返回箭头图标);排查是否存在事件冲突
如果你同时重写了OnOptionsItemSelected方法,并且处理了Android.Resource.Id.Home的事件,那系统会优先处理这个选项菜单事件,导致你绑定的NavigationClick事件失效。比如下面这种情况:public override bool OnOptionsItemSelected(IMenuItem item) { if (item.ItemId == Android.Resource.Id.Home) { Finish(); return true; } return base.OnOptionsItemSelected(item); }这种情况下你可以选择保留其中一种处理方式即可,要么用
OnOptionsItemSelected处理返回,要么用NavigationClick事件,不用同时设置。
先从第一个点开始排查,这是最常见的问题根源,应该能解决你的问题。
内容的提问来源于stack exchange,提问作者Mohsin Khan

