gpt4 book ai didi

java - 无法使用网络线程连接到 Facebook

转载 作者:行者123 更新时间:2023-11-30 03:51:39 25 4
gpt4 key购买 nike

我需要连接到 facebook,所以我在使用网络时使用了 Tread。但我有一个问题:

 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(){})”

我该如何解决这个问题?

谢谢!

最佳答案

您已经通过在 Annoyomous 类中的 Thread 中更改了上下文,this 现在是您的 annonomous 类而不是外部类。

试试这个(双关语):

 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(){

}

}

或者拉出你的 Threaded 类:

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
}

}

关于java - 无法使用网络线程连接到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com