2012-09-28 24 views
2

我正在尝试在Facebook上发布,所以我在使用下面的代码。它运作良好,但我似乎无法发布简单的确认敬酒。使用doInBackground(AsyncTask)时不能出现吐司

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

onProgressUpdate被更新,例如您的进度条,当代码仍然在运行完成的,你需要调用onProgressUpdate手册,使用publishProgress方法。

您正在返回doInBackground方法中的字符串(Object)。该字符串将被发送到onPostExecute方法。

因此,您应该做的是删除onProgressUpdate方法,并覆盖onPostExecute方法并将Toast代码放入其中。

注:onProgressUpdatepublishProgress应该只用于更新进度,而后台任务还在运行,而不是显示最终结果。对于最终结果,您使用onPostExecute方法。

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

+0

谢谢!有效 :) – gabi906

1

您需要在doInBackground()内拨打publishProgress()

0

重写onPostExecute()方法和呼叫转移到showToast()该方法。

看起来你的onProgressUpdate()根本没有被调用。而在你的情景中,你宁愿在doInBackground()完成后表示祝酒!