描述
进入App页面进行网络加载数据,需要显示loading的时候,出现android.view.WindowManager$BadTokenException: Unable to add window --token null is not valid; is your activity running?问题。
分析
mLoadingKProgressHUDView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.view_kprogress_hud_loading, null);
...
mLoadingKProgressHUD = KProgressHUD.create(getApplicationContext(), false)
private class ProgressDialog extends Dialog {}
官方文档:
由文档和错误日志可知:Activity才能创建、保存和恢复dialog,只有Activity才能添加窗口Dialog。所以创建Dialog时应该是使用的是Activity的context,而非Application的context。
修改
在创建的时候传入Activity的this即可。
mLoadingKProgressHUD = KProgressHUD.create(BaseActivity.this, false)
更改为Activity的this后,加载loading显示正常。