我正试图在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。请帮忙。
答案 0 :(得分:4)
onProgressUpdate
用于更新您的进度条,例如代码仍在运行时,您需要使用onProgressUpdate
方法调用publishProgress
手册。
您正在doInBackground
方法中返回一个字符串(Object)。此字符串将发送到onPostExecute
方法。
所以你应该做的是删除onProgressUpdate
方法,并覆盖onPostExecute
方法并将Toast代码放在其中。
注意: onProgressUpdate
和publishProgress
只应在后台任务仍在运行时用于更新进度,而不是用于显示最终结果。对于最终结果,您使用onPostExecute
方法。
http://developer.android.com/reference/android/os/AsyncTask.html
答案 1 :(得分:2)
当然没有调用onProgressUpdate。
你必须自己在doInBackground中调用它:
publishProgress(<somenumber>);
http://developer.android.com/reference/android/os/AsyncTask.html
答案 2 :(得分:1)
您需要在publishProgress()
内拨打doInBackground()
。
答案 3 :(得分:0)
重写onPostExecute()
方法并将调用移至showToast()
该方法。
看起来你的onProgressUpdate()
根本没有被调用。在你的场景中,你宁愿在doInBackground()
完成后展示祝酒词。