应用程序在非活动中显示ProgressDialog时崩溃

时间:2014-10-09 10:02:28

标签: android multithreading handler progressdialog android-context

从我的MainActivty我尝试使用以下行调用非活动类的方法:

Context context;
context = getApplicationContext();
mClient.start(context);

非活动课程:

 public void start(Context context) {

    final ProgressDialog startDialog;
    startDialog = new ProgressDialog(context);
    startDialog.setMessage("Loading...");
    startDialog.setCancelable(false);
    startDialog.show();

    mHandler.post(new Runnable () {
        @Override
        public void run() {

            Log.d(TAG,"Connecting to the server...");

            try {
                connect();
            } catch (Exception e) {

            }               

      startDialog.dismiss();

 }

该应用程序崩溃并显示以下消息:

  

android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序

哪里出错?

3 个答案:

答案 0 :(得分:1)

ProgressDialog中传递上下文参数,因此更改

startDialog = new ProgressDialog(this);

startDialog = new ProgressDialog(context);

并在您的mainActivity更改

context = getApplicationContext();

context = MainActivty.this;

答案 1 :(得分:1)

尝试在非活动类.start(....)方法

中更改此设置
  startDialog = new ProgressDialog(context);

而不是

  startDialog = new ProgressDialog(this);

您还需要更改mainActivity

  context = getApplicationContext();

 context = MainActivity.this;;

您需要传递上下文以在非活动类

中创建Progress Dialog

答案 2 :(得分:0)

startDialog = new ProgressDialog(context);