1

Android で Facebook ユーザーのいいねを取得しようとしています。グラフ API を使用していいねの取得に成功しましたが、通知メカニズムを有効にして UI を更新する方法が見つかりませんでした。

public class A{
  // Holds all the facebook related information here.

    public void fetchLikes(){
      mAsyncRunner.request( "me/likes", new RequestListener() {

         @Override
         public void onComplete(String response, Object arg1) {

           //update the liked pages to database here.
         }

      }
    }

 }


public class B{

  public void afterLogin(){
    A a = new A();
    a.fetchLikes(); // Problem is after here.
    updateUI();

  }

   public void updateUI(){
    //updating UI here
   }
}

Facebookのフェッチは独自のFacebook非同期ランナーで行われるため、通知を発信者に送り返すソリューションを作成できませんでした。上記の場合、a.fetchLikes() を呼び出した後、ローカル DB を更新しています。しかし、プロセスが完了する前に updateUI() が呼び出され、アクティビティを更新しようとしています。

皆さん、この問題を解決する方法を教えてください。プロセスが完了した後に通知する必要があります。

ありがとう、ビジェイ

4

1 に答える 1

1

updateUI()onComplete()ハンドラーから呼び出したいようですAsyncRunner(UIスレッドから呼び出されたと仮定します。FacebookのクラスonComplete()に精通していません)。AsyncRunner

fetchLikes()これは、への呼び出しを渡すことができるインターフェイスを取り込むことで実現しupdateUI()ます。

public class A {
    public void fetchLikes(OnFetchLikesComplete callback){
        mAsyncRunner.request( "me/likes", new RequestListener() {

        @Override
        public void onComplete(String response, Object arg1) {
            callback.onComplete(response, arg1);
        }

    }

    public interface OnFetchLikesComplete {
        void onComplete(String response, Object arg1);
    }
}

B次に、に呼び出す匿名の内部クラスを作成するだけですupdateUI()

public class B {
    public void afterLogin(){
        A a = new A();
        a.fetchLikes(new A.OnFetchLikesComplete() {
            public void onComplete(String response, Object arg1) {
                updateUI();
            }
        });
    }

    public void updateUI(){
        //updating UI here
    }
}
于 2012-08-12T16:37:00.363 に答える