2012-04-20 9 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

+0

クラッシュを再現できるコードを完全なものにする必要があります。上に貼り付けた 'onComplete()'のコードはありますか? –

答えて

1

私はFacebookのAPIに精通していないんだけど、この場合には(あなたは、単に別のスレッドで実行する機能(複数可)にLooper.prepare()を呼び出して試してみました、onComplete())?スレッド内の最初の関数呼び出しでなければなりません。