您的位置:首页 > 移动开发 > Android开发

Android ProgressDialog错误:Unable to add window

2012-09-12 15:28 302 查看
今天在看API学习ProgressDialog时遇到的一个问题



Android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

package com.covics.zfh;

import Android.app.Activity;

import Android.app.AlertDialog;

import Android.app.ProgressDialog;

import Android.content.Context;

import Android.content.DialogInterface;

import Android.os.Bundle;

import Android.view.View;

import Android.view.View.OnClickListener;

import Android.widget.Button;

import Android.widget.Toast;

public class HelloDialogActivity extends Activity {



private Button btn_alert;

private Button btn_progress;

private Button btn_custom

;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);



btn_alert = (Button)findViewById(R.id.btn_alertdialog);

btn_progress = (Button)findViewById(R.id.btn_progressdialog);

btn_custom = (Button)findViewById(R.id.btn_customdialog);



btn_alert.setOnClickListener(new MyOnClickListener());

btn_progress.setOnClickListener(new MyOnClickListener());

btn_custom.setOnClickListener(new MyOnClickListener());

}



class MyOnClickListener implements OnClickListener {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_alertdialog : {

// System.out.println("btn_alertdialog");

alertDialog();

break;

}

case R.id.btn_progressdialog : {

progressDialog(getApplicationContext());

break;

}

case R.id.btn_customdialog : {

ProgressDialog progress = ProgressDialog.show(getApplicationContext(),

"", "loading...", true);

// progress.show();

break;

}



default :

break;

}



}

}

private void alertDialog(){

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage("Are you sure to exit ?")

.setCancelable(false)

.setPositiveButton("yes", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

HelloDialogActivity.this.finish();

}

})

.setNegativeButton("no", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

dialog.cancel();

}

});

AlertDialog dialog = builder.create();

dialog.show();

}

private void alertDialog2(final Context context){

final CharSequence[] colors = {"red", "green", "yellow"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("pick a color");

builder.setItems(colors, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

System.out.println("choose ---" + dialog.toString()+" "+which);

Toast.makeText(context, dialog.toString()+" "+which, Toast.LENGTH_SHORT).show();

}

});

AlertDialog dialog = builder.create();

dialog.show();

}

private void progressDialog(final Context context){

ProgressDialog progress;

progress = new ProgressDialog(context);

progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

progress.setCancelable(false);

progress.show();

}

}



改正方法:将getApplicationContext()换成Activity.this.这样就可以了.

即:ProgressDialog progress = ProgressDialog.show(HelloDialogActivity.this,

"", "loading...", true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐