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 代码放入其中。

注意: onProgressUpdate andpublishProgress只能用于在后台任务仍在运行时更新进度,而不是用于显示最终结果。对于最终结果,您使用该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 回答