在fragment里面获取上下文 习惯了用getActivity().getApplicationContext()
错误代码:
private void showChoiceUpdata(){ new AlertDialog.Builder(getActivity().getApplicationContext()) .setTitle("检测有新版本") .setMessage("您要升级吗") .setPositiveButton("是", null) .setNegativeButton("否", null) .show(); }
报错Unable to add window -- token null is not for an application
正确代码:
private void showChoiceUpdata(){ new AlertDialog.Builder(this.getActivity()) .setTitle("检测有新版本") .setMessage("您要升级吗") .setPositiveButton("是", null) .setNegativeButton("否", null) .show(); }
对于AlertDialog来说,是须要依赖一个View,而View是相应于Activity的。只有一个Activity才能添加一个窗体。
getApplicationContext()指的则是整个应用的上下文。
对于一个应用Context来说。它的生命周期是整个应用程序的生命周期。而对于Activity来说。当它销毁之后它的生命周期就结束了。
AlertDialog是属于Acitivity的,当Activity销毁的时候它也必须销毁,所以这里我们指定是Activity的Context。
顺便一说在Activity使用Dialog,参是依然不能用Context,用this或者MyActivity.this
原址 https://www.cnblogs.com/mthoutai/p/6953542.html