2012-04-20 1 views
1

facebok로 로그인해야합니다. 그 이유 때문에 SDK를 다운로드하고 내 방법을 만들었습니다.AsyncTask 및 콜백 Android

사용자 정보가 기록 된 후 내 웹 서비스에 보내고 내 활동에 콜백해야합니다.

여기 코드가 있습니다. 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

내가 페이스 북 API에 익숙하지 해요,하지만이 경우에 (당신은 단순히 별도의 스레드에서 실행되는 기능 (들)에 Looper.prepare()를 호출 시도 , onComplete())? 스레드의 첫 번째 함수 호출이어야합니다.