今天使用AlertDialog的时候发现一个坑,在实例化AlertDialog时参数传入getApplicationContext,报了如下的错:
在new AlertDialog(context)时,context只能传入该activity的context,而不能传入getApplicationContext()的context,也就是
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());这样的写法是错的,正确的写法应该是:
AlertDialog.Builder builder = new AlertDialog.Builder(SearchActivity.this);我的理解是,getApplicationContext获取到的context是应用程序的context,当这个activity销毁了它还存在,而AlertDialog是属于一个Activity的,当Activity销毁时它也随之销毁,所以传入的context只能是activity的context,也就是Activity.this。
本文讲述了在使用AlertDialog时的一个常见错误,即在实例化时错误地使用了getApplicationContext作为上下文。正确的做法是使用当前Activity的上下文,例如SearchActivity.this。这是因为AlertDialog依赖于Activity的生命周期。
426

被折叠的 条评论
为什么被折叠?



