如何解决VS2019 更新出现 FragmentManager 错误
我最近将 VisualStudio 2019 的安装从 16.4.19 升级到 16.9.3 清理了一些错误后,它构建得很好。 当我尝试在 7.0 平板电脑上部署和运行它时,我收到以下消息:
java.lang.IllegalStateException Message=FragmentManager has not been attached to a host.
这是产生问题的代码:
void Navigate(Android.Support.V4.App.Fragment fragment)
{
var transaction = base.SupportFragmentManager.BeginTransaction();
transaction.Replace(Resource.Id.contentFrame,fragment);
transaction.Commit();
}
这段代码调用它:
void OnMenuItemSelected(object sender,Android.Support.Design.Widget.NavigationView.NavigationItemSelectedEventArgs e)
{
Vars.OnMain = false; //turn off screen updates until mainscreen is open
switch (e.MenuItem.ItemId)
{
case Resource.Id.aboutMenuItem: Navigate(new AboutFragment()); break;
case Resource.Id.catalogMenuItem: Navigate(new CatalogFragment()); break;
//case Resource.Id.itemmenuItem: Navigate(new ItemFragment()); break;
case Resource.Id.helpMenuItem: Navigate(new HelpFragment()); break;
case Resource.Id.settingsMenuItem: Navigate(new SettingsFragment()); break;
case Resource.Id.coordinateMenuItem: Navigate(new CoordinateFragment()); break;
case Resource.Id.mainMenuItem: Navigate(new MainScreenFragment()); break;
default: return;
}
e.MenuItem.SetChecked(true);
//var drawerLayout = FindViewById<Android.Support.V4.Widget.DrawerLayout>(Resource.Id.drawerLayout);
drawerLayout.CloseDrawer(Android.Support.V4.View.GravityCompat.End);
}
该应用已运行多年,太大,无法在此处发布。
去年 VS2019 环境有什么变化会导致这个问题吗?
感谢您的帮助, 丹
解决方法
从您发布的以下代码中,我们发现您正在从 base
变量获取片段管理器。 base 本身从哪里获得 FragmentManager
?当您 Navigate
时,活动可能会被销毁并重新创建。因此,您可能需要获得一个新的 FragmentManager。
void Navigate(Android.Support.V4.App.Fragment fragment)
{
var transaction = base.SupportFragmentManager.BeginTransaction();
transaction.Replace(Resource.Id.contentFrame,fragment);
transaction.Commit();
}
所以,您可以尝试使用以下代码:
FragmentTransaction transaction = FragmentManager.BeginTransaction ();
transaction.Replace(Resource.Id.contentFrame,fragment);
transaction.Commit();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。