我想我只是遇到了同样的问题,通过查看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,并构建视图.这个对我有用.
最好的祝福!
使用
onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
而不是onCreateDialog(Bundle savedInstanceState).不要创建警报对话框,使用方法提供的inflater,并构建视图.这个对我有用.
最好的祝福!
我想我只是遇到了同样的问题,通过查看DialogFragment的源代码学到了一些东西.
看起来即使重写onCreateDialog(...)是创建自定义对话框的有效方法,它也会导致DialogFragment具有空视图,就像错误消息所说的那样.在大多数情况下,这很好 - DialogFragment不需要View来显示对话框,但如果你想进一步嵌套片段(就像你那样),这将无法飞行.
考虑到你想与AlertDialog.Builder进行交互,我真的找不到完美的解决方案,但你有几个选择:
在对话框中创建按钮作为View的一部分(不使用AlertDialog.Builder).您可以通过覆盖onCreateView 而不是 onCreateDialog 来完成此操作.您应该能够通过将按钮放在自己的片段中来获得您提到的功能.我们在演出中做了类似的事情,我更喜欢这种方法.
实现您自己的类型,该类型继承自Fragment并以各种方式镜像DialogFragment,除了允许您需要的内容.这不应该太吓人,因为DialogFragment只有~400并且评论很多.可以很有趣.
使用常规的PagerAdapter而不是FragmentPagerAdapter.这样,您的DialogFragment没有View就没关系了.