Android DialogFragment解雇

时间:2014-01-30 21:30:30

标签: android android-dialogfragment

我已经查看了几个与DialogFragment中处理方向更改有关的问题,而且常见的主题似乎是askers没有得到任何答案,没有我理解的......

所以,我想采取不同的方法......有没有办法我可以通过编程方式关闭对话框...看看我的LogCat,我可以看到,如果对话框片段处于活动状态,屏幕方向是更改,然后我的活动重新启动。

一路上,DialogFragment也重新启动了,但这发生在onCreate之后和onResume之前(尽我所知)。我在对话框中检测到这一点非常简单,我想做的是在这种情况下中止对话视图创建。到目前为止我尝试的是这样的:

    if (normal_conditions_detected)
    {
        View v = inflater.inflate (R.layout.dialog_layout, container, false);
        final Dialog d = getDialog();
        d.setTitle (R.string.sensor_config);

        ... more stuff
        return v
    }
    else
    {
        getDialog().cancel();
        return null;
    }

这确实避免了我得到的空指针废话,但现在我得到了我只能描述为空对话框,即使在那里使用cancel()命令。有没有办法让我的dialogFragment代码拒绝创建视图?

1 个答案:

答案 0 :(得分:0)

旋转设备时,活动会执行

onSaveInstanceState 

方法并保存当前状态,这意味着它也会保存你的片段状态,在重新执行后它会执行

onCreate(Bundle savedInstanceState)

方法再次,savedInstanceState保存您的旧数据,在这里您可以制作类似

的内容
if (savedInstanceState == null){
   YourDialogFragment f = new YourDialogFragment()
   f.show // etc
}

只有一旦你的片段被创建,而不是将一个控件放在片段中,你可以通过活动控制它