在onCancelled throws和Exception

时间:2016-01-31 00:04:50

标签: java android alertdialog

我正在开发Android应用,我正在使用AsyncTask连接到服务器,发送和检索一些值等。
在我连接到服务器之前,我会检查手机是否已连接到互联网以及doInBackground()中的一些验证检查。如果这些检查中的任何一个失败,我取消该任务并设置一个取消消息字符串,稍后将用于向用户提供正确的消息。
现在,当我想在onCancelled方法中显示AlertDialog时会出现问题。我试图展示一个Toast,只是为了确保我能够达到活动,它有效。
经过几个小时的网络搜索并试图自己解决问题,我没有找到解决方案。
注意:我将当前的应用程序上下文传递到我正在扩展的类的构造函数中。

@Override
protected void onCancelled(){

String cancellationMessage = "";

// Some stuff goes in here to set the proper value for cancellationMessage.

AlertDialog.Builder builder = new AlertDialog.Builder(currentActivityContext);
builder.setTitle("Oops, something went wrong!")
        .setMessage(cancellationMessage)
        .setNeutralButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        }).create().show();

}

看起来调用builder.show();会抛出异常。

为什么在UI线程上运行onCancelled时会出现此问题?任何的想法?
顺便说一下,当我尝试显示警告对话框时,我在logcat选项卡中收到此异常:

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

1 个答案:

答案 0 :(得分:0)

好的,伙计们,我找到了解决办法 我将<div class="product_item0 ">...</div> <div class="product_item1 ">...</div> <div class="product_item2 ">...</div> <div class="product_item0 ">...</div> <div class="product_item1 ">...</div> <div class="product_item2 ">...</div> <div class="product_item0 ">...</div> <div class="product_item1 last">...</div> <div class="product_item2 emptyItem">...</div> 作为活动上下文传递给了类的构造函数,而不是getApplicationContext()。它现在就像一个魅力,嘿! 旧代码:

this

新代码:

public void signMeIn(View v){
    String email = (String) ((EditText)findViewById(R.id.signInEmailText)).getText().toString();
    String password = (String) ((EditText)findViewById(R.id.signInPasswordText)).getText().toString();

    UserCredentialsAsync uca = new UserCredentialsAsync(getApplicationContext());
    uca.signIn(email, password);
    uca.execute();
}