繁体   English   中英

Android DialogFragment解雇

[英]Android DialogFragment Dismissal

我已经看过与处理DialogFragment中的方向更改有关的几个问题,并且共同的主题似乎是问者没有得到任何答案,我什至没有理解...

因此,我想采用另一种方法...有没有办法以编程方式关闭对话框...查看我的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代码拒绝创建视图?

旋转设备时,活动将执行

onSaveInstanceState 

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

onCreate(Bundle savedInstanceState)

再次使用方法,savedInstanceState保存您的旧数据,在这里您可以进行如下操作

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

仅创建片段之后,您无需通过将控件放入片段中,而可以通过活动来对其进行控制

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM