问题描述
我有一个带有BottomNavigationView的MVVMCross Android应用程序,其中在MainActivity OnCreate方法中,我创建片段列表,导航以查看匹配它们的模型并打开第一个片段
异步OnCreate():
BuildFragmentsList();
if (_firstTimeCreated)
{
_firstTimeCreated = false;
await viewmodel.ShowInitialviewmodelsCommand.ExecuteAsync();
}
LoadFragment(Resource.Id.menu_first);
BuildFragmentsList():
private void BuildFragmentsList()
{
MvxFragment firstFragment = FirstFragment.NewInstance();
MvxFragment secondFragment = SecondFragment.NewInstance();
fragments.Add(firstFragment);
fragments.Add(secondFragment);
}
ShowInitialviewmodelsCommand():
private async Task ShowInitialviewmodelsCommandExecute()
{
await NavigationService.Navigate<Firstviewmodel>();
await NavigationService.Navigate<Secondviewmodel>();
IsInitialized = true;
}
LoadFragment():
private void LoadFragment(int id)
{
try
{
switch (id)
{
case Resource.Id.menu_first:
SwitchFragment(0);
break;
case Resource.Id.menu_second:
SwitchFragment(1);
break;
}
}
catch (Exception exception)
{
System.Diagnostics.Debug.WriteLine($"Exception: {exception.Message}");
Crashes.Trackerror(exception);
}
}
SwitchFragment():
private void SwitchFragment(int pos)
{
if (fragments.Count > 0)
SupportFragmentManager.BeginTransaction()
.Replace(Resource.Id.content_frame,fragments[pos])
.Commit();
}
我不明白为什么两个viewmodel都要初始化两次,首先是调用ShowInitialviewmodelsCommand
时,还是在BottomNaviagtionView
上选择它时。
在这种情况下,当我导航到“第二视图模型”时,它将再次初始化一次并再次加载内容
所有下一个开关都通过,而没有调用Initialize
方法
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)