当给定的回调被调用时,我希望向用户显示一个DialogFragment。问题是有时监听器会同时多次调用,而fragmentmanager会显示多个fragment。我正在使用以下代码:
if (getSupportFragmentManager().findFragmentByTag("testFragment") == null) {
getSupportFragmentManager().beginTransaction()
.add(new MyFragment(), "testFragment")
.commit();
Log.e("TAG", "Show! "+(getSupportFragmentManager()
.findFragmentByTag("testFragment") == null));
}
正如最后一行的日志信息所示,在提交FragmentTransaction之后,有一个短暂的时间段,findFragmentByTag返回null。那么,有没有比保存上次调用的毫秒时间并在第二次调用时忽略更优雅的方法来确保仅显示一次消息呢?