2012-04-20 74 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())?它应该是线程中的第一个函数调用。