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();

このコードではトーストが表示されないため、どうすればトーストを表示できますか。

4

2 に答える 2

3

例外が発生したときに doInBackground で Toast を表示する

onProgressUpdate()メソッドは、(一般的に) T オブジェクトの配列を受け取ります。あなたの場合は Integers の配列です

方法を修正する必要があります。今はスーパークラスメソッドをオーバーライドしていません。このメソッド番号 1 に 10 を渡しているため、メソッドを修正する必要があります。

メソッドは次のようにする必要があります。

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

そして今、それはうまくいくはずです。

AsyncTask docsをよく見てください。

于 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 に答える