我希望在调用给定回调时向用户显示DialogFragment。我的问题是,有时在同一时刻对侦听器进行多次调用,而fragmentmanager显示多个片段,我正在使用以下代码
if (getSupportFragmentManager().findFragmentByTag("testFragment") == null) {
getSupportFragmentManager().beginTransaction()
.add(new MyFragment(), "testFragment")
.commit();
Log.e("TAG", "Show! "+(getSupportFragmentManager()
.findFragmentByTag("testFragment") == null));
}
正如最后一行中的Log消息所示,在提交FragmentTransaction之后,findFragmentByTag返回null的时间很短。那么,是否有某种方法可以确保只显示消息,而不是保存最后一次调用的mili-time,例如在一秒钟内忽略后来的调用?
答案 0 :(得分:10)
提交后立即调用getSupportFragmentManager().executePendingTransactions()
应该强制片段管理器立即提交片段,以便后续对findFragmentByTag("testFragment")
的调用不再返回null。