2012-04-20 76 views
1

我很喜歡用facebok進行登錄,爲此我下載了sdk並創建了我的方法。AsyncTask和回調Android

當我得到用戶登錄的信息後,我需要將此信息發送給我的Web服務並回調我的活動。

這是我的代碼。 onComplete我試圖解釋我需要: 基本上,我需要回調我目前的活動。

public class DisplayLoginActivity extends FragmentActivity { 



    /** Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.display_login_activity); 

     login(); 
    } 

    public void login(){ 
     facebook = new Facebook(kAppId); 

     facebook.authorize(this, new DialogListener() { 

      @Override 
      public void onComplete(Bundle values) { 
       System.out.println("onComplete"); 
         JSONObject me = null; 
         me = new JSONObject(facebook.request("me"));     

         String id = me.getString("id");  

         //I want here to call other async request and make it call back to DisplayLoginActivity, for that 
         //reason i created callback with interface so i need to give this of my Activity 
         //If i give this so it's DialogListener this. I tried to do this DisplayLoginActivity.this but it crashes 
      } 


      @Override 
      public void onFacebookError(FacebookError error) { 
       error.getMessage(); 

      } 

      @Override 
      public void onError(DialogError e) { 

      } 

      @Override 
      public void onCancel() { 

      } 

     }); 
    } 

} 

也許你有一些想法? 謝謝。

編輯:

04-20 08:34:50.270: E/AndroidRuntime(7642): FATAL EXCEPTION: Thread-10 
04-20 08:34:50.270: E/AndroidRuntime(7642): java.lang.ExceptionInInitializerError 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at com.my.main.DisplayLoginActivity$1$1.run(DisplayLoginActivity.java:161) 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at java.lang.Thread.run(Thread.java:1019) 
04-20 08:34:50.270: E/AndroidRuntime(7642): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at android.os.Handler.<init>(Handler.java:121) 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421) 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:421) 
04-20 08:34:50.270: E/AndroidRuntime(7642):  at android.os.AsyncTask.<clinit>(AsyncTask.java:152) 
04-20 08:34:50.270: E/AndroidRuntime(7642):  ... 2 more 
+0

你可以粘貼你的logcat崩潰消息嗎? – idiottiger 2012-04-20 05:08:03

+0

您必須提供完整的代碼才能重現崩潰。上面粘貼了'onComplete()'的代碼嗎? – 2012-04-20 06:05:16

回答

1

我不熟悉Facebook的API,但你嘗試過簡單地在一個單獨的線程運行功能的調用Looper.prepare()(在這種情況下, ,onComplete())?它應該是線程中的第一個函數調用。