0

AsyncTask の doInBackground 内で IOException が発生したときに Toast を適切に表示する方法は?

4

3 に答える 3

2

onPostExecute または onProgressUpdate のいずれかをオーバーライドして、UI スレッドにメッセージを表示できます。

onProgressDisplay を使用するには、AsyncTask を拡張するときに 2 番目の型を String として宣言します。

private class YourTask extends AsyncTask<ParamType, String, ReturnType> {

onProgressUpdate をオーバーライドします。

protected void onProgressUpdate(String... progress) {
     String errMsg = progress[0];
     Toast.makeText(getApplicationContext(), errMsg, Toast.LENGTH_SHORT).show();
}

次に、doInBackground で例外が発生したときに「progress」関数を呼び出すことができます。

protected ReturnType doInBackground(ParamType... params) {
     try {
         // do stuff
     } catch (IOException e) {
        publishProgress("My Error Msg goes here");
     }
     return result;
 }
于 2011-07-13T22:38:10.710 に答える
1

ちょうどこのような:

Toast.makeText(Context context, int resId, int duration).show();

Context が必要なので、それを AsyncTask に渡すだけです。詳細情報.

于 2011-07-13T22:25:55.480 に答える