DialogFragment中的ViewPager - IllegalStateException:Fragment没有视图

 达人多多宝_836 发布于 2023-02-13 17:09

我想我只是遇到了同样的问题,通过查看DialogFragment的源代码学到了一些东西.

看起来即使重写onCreateDialog(...)是创建自定义对话框的有效方法,它也会导致DialogFragment具有空视图,就像错误消息所说的那样.在大多数情况下,这很好 - DialogFragment不需要View来显示对话框,但如果你想进一步嵌套片段(就像你那样),这将无法飞行.

考虑到你想与AlertDialog.Builder进行交互,我真的找不到完美的解决方案,但你有几个选择:

    在对话框中创建按​​钮作为View的一部分(不使用AlertDialog.Builder).您可以通过覆盖onCreateView 而不是 onCreateDialog 完成此操作.您应该能够通过将按钮放在自己的片段中来获得您提到的功能.我们在演出中做了类似的事情,我更喜欢这种方法.

    实现您自己的类型,该类型继承自Fragment并以各种方式镜像DialogFragment,除了允许您需要的内容.这不应该太吓人,因为DialogFragment只有~400并且评论很多.可以很有趣.

    使用常规的PagerAdapter而不是FragmentPagerAdapter.这样,您的DialogFragment没有View就没关系了.


Skycorsarius.. 20

使用

onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

而不是onCreateDialog(Bundle savedInstanceState).不要创建警报对话框,使用方法提供的inflater,并构建视图.这个对我有用.

最好的祝福!

2 个回答
  • 使用

    onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    

    而不是onCreateDialog(Bundle savedInstanceState).不要创建警报对话框,使用方法提供的inflater,并构建视图.这个对我有用.

    最好的祝福!

    2023-02-13 17:10 回答
  • 我想我只是遇到了同样的问题,通过查看DialogFragment的源代码学到了一些东西.

    看起来即使重写onCreateDialog(...)是创建自定义对话框的有效方法,它也会导致DialogFragment具有空视图,就像错误消息所说的那样.在大多数情况下,这很好 - DialogFragment不需要View来显示对话框,但如果你想进一步嵌套片段(就像你那样),这将无法飞行.

    考虑到你想与AlertDialog.Builder进行交互,我真的找不到完美的解决方案,但你有几个选择:

      在对话框中创建按​​钮作为View的一部分(不使用AlertDialog.Builder).您可以通过覆盖onCreateView 而不是 onCreateDialog 完成此操作.您应该能够通过将按钮放在自己的片段中来获得您提到的功能.我们在演出中做了类似的事情,我更喜欢这种方法.

      实现您自己的类型,该类型继承自Fragment并以各种方式镜像DialogFragment,除了允许您需要的内容.这不应该太吓人,因为DialogFragment只有~400并且评论很多.可以很有趣.

      使用常规的PagerAdapter而不是FragmentPagerAdapter.这样,您的DialogFragment没有View就没关系了.

    2023-02-13 17:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有