应用程序崩溃上显示ProgressDialog在非活动
从我MainActivty我想调用非活性类的方法有以下行:应用程序崩溃上显示ProgressDialog在非活动
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不是一个n application
哪里出错?在ProgressDialog
传递上下文参数,所以更改
startDialog = new ProgressDialog(this);
到
startDialog = new ProgressDialog(context);
而在你mainActivity变化
context = getApplicationContext();
到
context = MainActivty.this;
这似乎工作。但我不明白为什么context = getApplicationContext();不起作用。如果我从MainActivity.this调用它,它应该在上下文变量中保存'MainActivity.this'... – andreasperelli 2014-10-09 10:18:18
@andreasperelli see this [何时调用活动上下文或应用程序上下文?](http://*.com/questions/ 7298731 /当通话活动上下文 - 或应用上下文) – 2014-10-09 10:19:42
尝试在非活性类来改变这种.start(....)
方法
startDialog = new ProgressDialog(context);
,而不是
startDialog = new ProgressDialog(this);
你也需要改变你的mainActivity
context = getApplicationContext();
到
context = MainActivity.this;;
您需要通过上下文非活性类来创建Progress Dialog
startDialog = new ProgressDialog(context);
不,它是不可能的。它是一个非活动类,你会得到一个编译时错误 – Blackbelt 2014-10-09 10:03:53
它应该是可能的,如果你将一个上下文作为参数传递给非活动类 – andreasperelli 2014-10-09 10:14:36
当然这是可能的,但'new ProgressDialog(this);'意味着不同 – Blackbelt 2014-10-09 10:17:11