解决API<8时引发的AlerDialog is not created – java.lan...

解决API<8时引发的AlerDialog is not created - java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 1

报错:java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 4

首先解释下showDialog()和onCreateDialog直接的关系。

api >= 8 时, showDialog(int id,Bundle b) --> onCreateDialog(int id,Bundle b)

api < 8 时,showDialog(int id) ---> onCreateDialog(int id) 。此时,onCreateDialog(int)返回null将报错,具体看代码:
[url]http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/app/Activity.java#Activity.showDialog%28int%29[/url]

结论:
1、要使用showDialog(int id)显示Dialog,就必须重写onCreateDialog(int id)
2、使用showDialog(int id,Bundle b)显示Dialog,可重写onCreateDialog(int id,Bundle b)或onCreateDialog(int id)
3、默认onCreateDialog(int id,Bundle b)调用onCreateDialog(int id)
4、显示Dialog时,若是不需要使用Bundle传参数,可只重写onCreateDialog(int id)

其它参考:
[url]http://stackoverflow.com/questions/4225526/android-runtimeexception-oncreatedialog-did-not-create-a-dialog-for-id[/url] 

页:  [1]

转载于:https://my.oschina.net/zhenguoguan/blog/138714

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值