运行报错 :android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for
错误代码:
case R.id.menu_item_1:
final int Max = 100;
final ProgressDialog progressDialog =
new ProgressDialog(getApplicationContext());
progressDialog.setProgress(0);
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setTitle("我是一个进度条DialIog");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(Max);
progressDialog.show();
/**
* 开个线程
*/
new Thread(new Runnable() {
@Override
public void run() {
int p = 0;
while (p<Max){
try {
Thread.sleep(100);
p++;
progressDialog.setProgress(p);
}catch (InterruptedException e){
e.printStackTrace();
}
}
progressDialog.cancel();//达到最大就消失
}
}).start();
break;
提示这个初始化时需要的是Context类型的,但不能是使用getApplicationContext()方法获得的Context,所以应该改成如下图的XXXactivity.this;
正确代码
case R.id.menu_item_1:
final int Max = 100;
final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgress(0);
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setTitle("我是一个进度条DialIog");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMax(Max);
progressDialog.show();
/**
* 开个线程
*/
new Thread(new Runnable() {
@Override
public void run() {
int p = 0;
while (p<Max){
try {
Thread.sleep(100);
p++;
progressDialog.setProgress(p);
}catch (InterruptedException e){
e.printStackTrace();
}
}
progressDialog.cancel();//达到最大就消失
}
}).start();
break;
这样就能完美运行了