【问题标题】:dismiss a dialogfragment while it is still being created在对话片段仍在创建时将其关闭
【发布时间】:2015-03-19 09:47:06
【问题描述】:

DialogFragment 的创建生命周期中的什么时候,我可以安全地关闭它,这样它就永远不会对用户可见?我的意图是,当用户旋转屏幕时,DialogFragment 再次经历创建生命周期,我希望有选择地重新创建它。如果condition x,则重新创建DialogFragment,如果condition y,则在它仍在重新创建时将其关闭,以便用户永远不会在新方向上看到它。那么,我可以在其创建生命周期的哪个位置说dismiss

【问题讨论】:

  • 你可以在调用dismiss之前检查它是否显示?
  • @Blackbelt,我会把它放在哪里? onViewCreated?
  • 或者您可以在显示对话框之前检查片段/活动状态
  • onCreateDialog 中有选择地返回null 会起作用吗?
  • 您应该参考this 以获取Dialog Fragment 的详细文档。有关更多信息,请参阅 [this] (stackoverflow.com/questions/11201022/…)。希望这对你有帮助。

标签: android android-fragments android-dialogfragment


【解决方案1】:

你可以尝试在onConfigureChanged(...)中控制DialogFragment的生命:

@Override
public void onConfigurationChanged(Configuration newConfig) {
     super.onConfigurationChanged(newConfig);

     Fragment yourDialog = getFragmentManager().findFragmentByTag("dialog_tag");
     if(yourDialog != null) {
        DialogFragment df = (DialogFragment) yourDialog;
        df.dismiss();
     }

     if(condition x)
     {
       //here recreate your dialog
     }
}

希望这个想法有所帮助!

【讨论】:

    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 2013-08-13
    • 2014-03-27
    • 2014-10-21
    • 1970-01-01
    • 2018-03-04
    • 2021-09-20
    • 1970-01-01
    相关资源
    最近更新 更多