DialogFragment getDialog() return null

本文探讨了在使用DialogFragment时遇到getDialog()返回null的情况,并详细解释了这是因为在DialogFragment的生命周期中过早调用了此方法。文章指导如何正确地在合适的时机调用getDialog()以避免返回null。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I am trying to get the Dialog I have created with an extended DialogFragment using DialogFragment.getDialog() but it returns null.

Basically I want to alter the text in the layout from the FragmentActivity which creates and shows the DialogFragment.

You're calling getDialog() too early in the DialogFragmen'ts life cycle.

getDialog() simply returns the private variable mDialog from the DialogFragment.

When a DialogFragment is instantiated mDialog is null, and then it gets set when onCreateDialog is fired inside getLayoutInflater(Bundle savedInstanceState), so you have to call getDialog after onCreateDialog.

For example, the order of some common methods called is onCreateonCreateDialog, and onCreateViewonStart. So, you can call getDialog and have it return something in onCreateViewor onStart, but not in onCreate or onCreateDialog.

Eventhough onStart is called called when the Fragment is visible to the user, adjusting the layout of the fragment at that point looks fine.... for example setting the width and height using getDialog().getWindow().setLayout(..., ...); doesn't make the fragment appear to change size, but just appears to have the newly set size.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值