我正在问这个问题为自己创建一个这样的记录,我通过环顾四周找到答案,但我觉得我花了太长时间才弄明白。假设我在搜索中使用了错误的关键字,我试图将我在搜索中使用的关键字链接到此问题,并希望能帮助其他人。
我试图使用OnOptionsItemSelected方法导航回上一个活动。这就是Android允许您按下操作栏按钮的方式。
public override bool OnOptionsItemSelected(IMenuItem item)
{
if (item.ItemId != global::Android.Resource.Id.Home) return base.OnOptionsItemSelected(item);
ViewModel.BackNavigationButtonCommand.Execute();
return true;
}
我使用以下方式启用了后退按钮:
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
然而,SetDisplayHomeAsUpEnabled回调没有转到OnOptionsItemSelected。
答案 0 :(得分:1)
此解决方案的答案是使用activity属性:
[Activity(
Label = "Project Wavelength"
, Icon = "@drawable/icon"
, Theme = "@style/Theme.AppCompat.Light.DarkActionBar"
, ScreenOrientation = ScreenOrientation.Portrait
, LaunchMode = LaunchMode.SingleTop)]
LaunchMode = LaunchMode.SingleTop ,用于返回Backstack中的现有活动。
[Activity(Label = "DevicesWithSensorsForRoom"
, Icon = "@drawable/icon"
, ScreenOrientation = ScreenOrientation.Portrait
, Theme = "@style/Theme.AppCompat.Light.DarkActionBar"
, ParentActivity = typeof(RoomsOverviewActivity)
, LaunchMode = LaunchMode.SingleTop)]
ParentActivity = typeof(RoomsOverviewActivity),用于定义要返回的父级。
我不知道是否有使用viewmodels的MVVMCross解决方案。然而,这对我现在有用。如果有MVVMCross解决方案,我想听听它。
这些属性不需要OnOptionsItemSelected和SetDisplayHomeAsUpEnabled。