0

我想在 doInBackground 方法的后台线程中显示一个 Toast。当然,这是行不通的。所以我尝试了这个

int error = 1;
publishProgress(error);
Log.i ( "InternetConnection" , "Loading Internet from Cache not working because of no Internet connection." );
return null;

onProgressUpdate 方法是

protected void onProgressUpdate ( Integer integers ){
    if ( integers == 1){
        Toast.makeText ( c.getApplicationContext(), "Daten konnten nicht geladen werden.", 0).show();
    }
}

对不对,当我调用 publishProgress 时使用了 onProgressUpdate ?

顺便说一句,C 是我的活动,所以

Context c = MainActivity();

我怎么可能显示 Toast,因为使用此代码它没有显示。

4

2 回答 2

3

当我有异常时在 doInBackground 中显示 Toast

onProgressUpdate()方法采用T 对象数组(通常),在您的情况下为 Integers 数组

你需要纠正你的方法!现在它不是覆盖超类方法。十,您将传递到此方法编号 1,因此您需要更正您的方法。

该方法必须如下所示:

protected void onProgressUpdate(Integer... integers) {
    int value = integers[0];
   if (value == 1) {
      // show your Toast    
   }
}

现在它应该可以工作了。

请仔细查看AsyncTask 文档

于 2013-11-22T11:10:44.610 回答
0

将日志放入 doInBackground 本身,但用于Handlers这样做。

handler.post(new Runnable() {

                            @Override
                            public void run() {
                                // TODO Auto-generated method stub
                               //your logs here.
                            }
                        });
于 2013-11-22T11:12:39.983 回答