android - Android Xamarin:FragmentManager.FindFragmentByTag 为空
问题描述
我试图更好地理解 FragmentMananger。
我在 FrameLayout 中“膨胀”了我的片段,效果很好。
var fragmentTag = typeof(MyFragment).Name;
myFragment = new MyFragment();
FragmentManager.BeginTransaction()
.Add(Resource.Id.FrameLayout, myFragment, fragmentTag)
.Commit();
但现在的问题是,我什么时候可以通过 TagSearch 找到我的片段。因为在 BeginTransaction() 之后
FragmentManager.FindFragmentByTag<MyFragment>(typeof(MyFragment).Name
仍然为空
解决方案
您可以在方法之后使用executePendingTransactionsCommit
方法,它将立即执行。
你也可以参考这个案例。
FragmentTransaction fragmentTransaction = FragmentManager.BeginTransaction();
Fragment1 fragment = (Fragment1)FragmentManager.FindFragmentByTag(FRAGMENT_TAG);
if (fragment == null)
{
fragment = new Fragment1();
fragmentTransaction.Add(fragment, FRAGMENT_TAG).Commit();
FragmentManager.ExecutePendingTransactions();
}
Fragment1 f=FragmentManager.FindFragmentByTag<Fragment1>(typeof(Fragment1).Name);
if (f != null)
{
Toast.MakeText(this, "Fragment1 is not null", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "Fragment1 is null", ToastLength.Short).Show();
}
推荐阅读
- apache-spark-sql - Spark dataframe groupby 列中的唯一值
- c# - 为 SecurityNamespace.SetPermissions 方法 TFS 设置安全令牌
- html - 在媒体查询中调整 div 的大小
- wpf - WPF DockPanel 不显示垂直滚动条
- node.js - Nodejs,Electron噩梦安装时没有定义?
- ios - 金属性能调试
- c# - 只允许某些类编辑某些属性
- c++ - avcodec_receive_packet 中的错误(gdi screenshot + ffmpeg)
- vba - AfterUpdate - 组合多个操作
- python - Python Regex 在交替运算符后没有组