2

Facebookに投稿しようとしているので、次のコードを使用しています。うまくいきますが、簡単な確認トーストを投稿できないようです。

private class FacebookPoster extends AsyncTask<String, Object, Object>
    {

        @Override
        protected Object doInBackground(String... message)
        {
            Bundle parameters = new Bundle();
            parameters.putString("message", message[0]);
            parameters.putString("description", "topic share");
            parameters.putString("link", ctx.getResources().getString(R.string.rateLink));
            parameters.putString("picture", ctx.getResources().getString(R.string.linkIconPicture));
            Log.d("ERRRR", "set params");
            try
            {
                facebook.request("me");
                String response = facebook.request("me/feed", parameters, "POST");
                Log.d("Tests", "got response: " + response);
                if (response == null || response.equals("") || response.equals("false"))
                {
                    return "Blank response.";

                }
                else
                {
                    return "Message posted to your facebook wall!";

                }
            }
            catch (Exception e)
            {
                return "Failed to post to wall!";
            }
        }

        @Override
        protected void onProgressUpdate(Object... values)
        {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);
            showToast(values);

        }
    }

showToast関数

private void showToast(Object message)
    {
        Toast.makeText(ctx, message.toString(), Toast.LENGTH_SHORT).show();
    }

onProgressUpdateは呼び出されていないと思います。助けてください。

4

4 に答える 4

4

onProgressUpdateたとえば、コードがまだ実行されているときにプログレスバーを更新するために作成されており、メソッドonProgressUpdateを使用して手動で呼び出す必要があります。publishProgress

メソッドで文字列(オブジェクト)を返していますdoInBackground。この文字列はonPostExecuteメソッドに送信されます。

したがって、メソッドを削除し、onProgressUpdateメソッドをオーバーライドして、onPostExecuteその中にToastコードを配置する必要があります。

注: これは、バックグラウンドタスクの実行中に進行状況を更新するためにのみ使用する必要があり、最終結果を表示するためには使用しないでくださいonProgressUpdatepublishProgress最終結果には、このonPostExecuteメソッドを使用します。

http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-09-28T13:35:35.303 に答える
2

もちろん、onProgressUpdateは呼び出されていません。

doInBackgroundで自分で呼び出す必要があります。

publishProgress(<somenumber>);

http://developer.android.com/reference/android/os/AsyncTask.html

于 2012-09-28T13:34:28.607 に答える
1

あなたはあなたの中で呼び出す必要がありpublishProgress()ますdoInBackground()

于 2012-09-28T13:34:09.570 に答える
0

メソッドをオーバーライドしonPostExecute()、呼び出しをshowToast()そのメソッドに移動します。

あなたonProgressUpdate()はまったく呼ばれていないようです。そして、あなたのシナリオでは、終了後に乾杯を見せたいと思いますdoInBackground()

于 2012-09-28T13:36:20.733 に答える