无法通过网络线程连接到Facebook



我需要连接到Facebook,因此我在使用网络时使用胎面。但是我有一个问题:

 Thread t = new Thread(new Runnable() {
        @Override
        public void run() {
                    FacebookConnectTask task = new FacebookConnectTask("facebookId", "token", "email", facebookGender,0, 0);
                    task.setOnPreExecuteListener(this);
                    task.setOnDoneListener(this);
                    task.execute();
                }
    });
    t.start();
}

我不能做

task.setOnPreExecuteListener(this);
task.setOnDoneListener(this);

eclipse给我这个错误:"类型任务中的方法setOndOnelistener(task.ondonelistener)不适用于参数(new runnable(){})"

我该如何修复?

谢谢!

您已经通过在烦人的类中在线程中更改了上下文,this现在是您的nonnansolous类而不是外部类。

尝试这个(双关语):

 task.setOnPreExecuteListener(YourOuterClass.this);
 task.setOnDoneListener(YourOuterClass.this);

即。

public class YourClass implements OnDoneListener {
    public doFacebook(){
      new Thread(new Runnable(){
         @Override
         public void run(){
              task.setOnDoneListener(YourClass.this);
         }
      }.start();
    }

    @Override
    public void onDone(){
    }
}

或替代将螺纹类拉出来:

public class DoSomething implements Runnable {
       private final OnDoneListener listener;
       public DoSomething(OnDoneListener listener){
            this.listener = listener;
       }
       @Override
       public void run(){
            FacebookConnectTask task = ... ;
            task.setOnDoneListener(listener);
       }

}
public class YourActivity extends Activity implements OnDoneListener {
     public void onCreate(Bundle b){
          new Thread(new DoSomething(this)).start();
     }
     @Override
     public void onDone(){
        // Tada
     }
}

如果您想保持冷却器是创建自己的界面,并将所有Facebook的内容保留在可运行的类中:

 public class DoSomething implements Runnable, OnDoneListener {
       public interface OnFacebookFinished {
              void onFacebookFinished();
       }
       private final OnFacebookFinished listener;
       public DoSomething(OnFacebookFinished listener){
            this.listener = listener;
       }
       @Override
       public void run(){
            FacebookConnectTask task = ... ;
            task.setOnDoneListener(this);
       }
       @Override
       public void onDone(){
           if(listener != null){
               listener.onFacebookFinished();
           }
       }

}
public class YourActivity extends Activity implements OnFacebookFinished {
     @Override
     public void onCreate(Bundle b){
          new Thread(new DoSomething(this)).start();
     }
     @Override
     public void onFacebookFinished(){
        // Tada
     }
}

最新更新